SQL一起执行Order by和Group

时间:2012-10-04 03:05:38

标签: sql tsql group-by sql-order-by

我有下表

UNIQUEKEY    ID      Clicks IsProcessed   INSERTDATE
 1         100001   10        1         2011-05-14 00:00:00.000
 2         100001   20        0         2011-05-13 00:00:00.000
 3         100001   30        1         2011-05-18 00:00:00.000
 4         100002   10        1         2011-05-20 00:00:00.000
 5         100002   15        0         2011-05-24 00:00:00.000
 6         100002   10        0         2011-05-05 00:00:00.000

我需要一个T-SQL查询,它首先按INSERTDATE(desc)排序 一旦订购,它应该返回一个GROUP by ID和IsProcessed,结果应该显示所有列Orderby并按上述方式分组。

编辑: 因此,如果我们运行查询,让我们说ID 10001它应该给我2个结果集: 期望的结果:

UNIQUEKEY    ID      Clicks IsProcessed   INSERTDATE
 3         100001   30        1         2011-05-18 00:00:00.000
 1         100001   10        1         2011-05-14 00:00:00.000        
 2         100001   20        0         2011-05-13 00:00:00.000

作为关键字的IDIsProcessed的结果,结果按Date (desc)排序。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

试试这个:

declare @ID int = 100001
declare @IsProcessed int

declare
  crsMy cursor fast_forward for
select
  distinct IsProcessed
from
  tTest
order by
  IsProcessed desc

open crsMy

fetch next from crsMy into @IsProcessed

while @@fetch_status = 0
begin
  select
    UNIQUEKEY
    ,ID
    ,Clicks
    ,IsProcessed
    ,INSERTDATE
  from
    tTest
  where
    (ID=@ID)
    and
    (IsProcessed=@IsProcessed)
  order by
    INSERTDATE desc



  fetch next from crsMy into @IsProcessed
end

close crsMy
deallocate crsMy

sql fiddle

(在sqlfiddle上只显示第一个结果集。)