2015-11-17 44 views
0

我有一個表,這些列一組記錄得到3種不同類型的記錄:如何寫一個存儲過程中使用不同的條件

Id aId Sid SerId St CreatedTime  DateTime   by 
1 2 23 34  2 7/1/2014 13:00 11/12/2014 23:40 A 

在上表列的值將是2,3或4.對於St,它將再次爲2,3或4.現在我想從這張表中選擇3行。那3行應該有這樣的值。

  1. 應當具有最高日期時間和它的第一值應在(2,3,4)和AID值應該是2

  2. 應當具有最高日期時間和其st值應該在(2,3,4)和aId值應該是3

  3. 它應該有最高的日期時間,其st值應該在(2,3,4)和aId值應該是3

任何人都可以幫忙嗎?

回答

0

我想你想要這樣的:

;with cte as(select *, row_number() over(partition by aid, st order by DateTime desc) rn 
      from tablename 
      where (aid = 2 and st = 2) or (aid = 3 and st = 3) or (aid = 4 and st = 4)) 
select * from cte where rn = 1 

說明:先篩選aidst對與2, 3, 4值。然後從DateTime列中降序排列,然後在aidst之間進行分區。

目前尚不清楚,但你可能希望這樣的:

;with cte as(select *, row_number() over(partition by aid order by DateTime desc) rn 
      from tablename 
      where aid in(2, 3, 4) and st in(2, 3, 4)) 
select * from cte where rn = 1 
相關問題