|
|
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
Можно ли с помощью данной опции выбрать из "подгрупп" первые несколько записей. То есть примерно так 1 2 3 1 2 4 1 2 5 2 1 1 2 1 2 2 2 3 2 2 6 первые записи из подгрупп организованных первыми двумя полями: 1 2 3 2 1 1 2 2 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2002, 19:18:39 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
С этим понятно - не для этого предназначаена WITH TIES. Однако вопрос остается - как из подгрупп выбрать первые записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 08:43:27 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
В лоб - с помощью курсора и временной таблицы (или табличной переменной). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 09:33:01 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
[src]select f1,f2,min(f3) from table group by f1,f2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 09:35:37 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
select f1,f2,min(f3) from table group by f1,f2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 09:35:50 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
DECLARE @t table ( t1 Int, t2 int, t3 int ) insert into @t (t1,t2, t3) values (1,1,5) insert into @t (t1,t2, t3) values (1,1,2) insert into @t (t1,t2, t3) values (1,1,3) insert into @t (t1,t2, t3) values (1,2,5) insert into @t (t1,t2, t3) values (1,2,2) insert into @t (t1,t2, t3) values (1,2,3) insert into @t (t1,t2, t3) values (1,3,5) insert into @t (t1,t2, t3) values (1,3,2) insert into @t (t1,t2, t3) values (1,3,1) Declare @k table ( t1 Int, t2 int ) insert into @K (t1,t2) SELECT M.t1,M.t2 FROM @t M group by M.t1, M.t2 SELECT * FROM @t DECLARE @S table ( t1 Int, t2 int, t3 int ) DECLARE @v1 int, @v2 int set @v1=0 set @v2=0 select top 1 @v1=t1, @v2=t2 from @k where ((t1=@v1)and (t2> @v2) )OR (t1>@v1) order by t1,t2 while @@rowcount >0 begin insert into @S (t1,t2, t3) SELECT TOP 1 t1,t2, t3 FROM @t WHERE ( t1=@v1) and ( t2=@v2) order by t1,t2 select top 1 @v1=t1, @v2=t2 from @k where ((t1=@v1)and (t2> @v2) )OR (t1>@v1) order by t1,t2 end SELECT * FROM @s go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 14:47:26 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. На самом деле у меня немного другая задача, которую можно решить по другому, но самый эффективный способ заключался бы в выборке из подгрупп первых записей. Это конечно если бы синтаксис SQL поддерживал такую функцию. Вот за что я иногда не люблю SQL и реляционные таблицы - задачи, которые интуитивно просто решаются с помощью SQL не удается решить просто. Просто в моем случае - без использования курсоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 21:45:18 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
set nocount on create table #t(i1 int,i2 int,i3 int) insert #t values(1,2,3) insert #t values(1,2,4) insert #t values(1,2,5) insert #t values(2,1,1) insert #t values(2,1,2) insert #t values(2,2,3) insert #t values(2,2,6) select i1,i2,min(i3) from #t group by i1,i2 order by i1,i2 drop table #t сложно???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2002, 22:37:03 |
|
||
|
Непонятки с TOP N WITH TIES
|
|||
|---|---|---|---|
|
#18+
На самом деле там еще одна колонка, которая уже никак не упорядочена (третья действительно либо макс, либо мин), но значение которой и нужно выбрать по сочетанию первых двух и максимуму или минимуму третьей. Используя подзапрос знаю как сделать, а по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2002, 09:11:22 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32049225&tid=1820475]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 307ms |

| 0 / 0 |
