2014-02-10 43 views
2

我有以下查詢:ROW_NUMBER()在分區 - 更簡單的方法

INSERT into @TEST (col1,staffnumber,rn) 
SELECT starttime as col1,staffnumber,ROW_NUMBER() OVER (PARTITION BY StaffNumber ORDER BY STARTTIME DESC) AS rn 
    FROM @TempTable2 t2 
UNION 
SELECT eventdate as col1, staffnumber,ROW_NUMBER() OVER (PARTITION BY StaffNumber ORDER BY EVENTDATE DESC) AS rn 
    FROM @TempTable1 t1 

但是,很明顯,這給了我以下值:

COL1    | staffnumber | rn 
10/02/2014 10:29:24   1   1 
10/02/2014 09:08:19   1   3 
10/02/2014 10:00:23   1   2 
10/02/2014 10:00:29   1   1 

然而,我需要它顯示:

COL1    | staffnumber | rn 
10/02/2014 10:29:24   1   1 
10/02/2014 09:08:19   1   4 
10/02/2014 10:00:23   1   3 
10/02/2014 10:00:29   1   2 

我可以做這樣做如下:

INSERT into @TEST1 (col1,staffnumber,rn) 
SELECT convert(time,col1),staffnumber,ROW_NUMBER() OVER (PARTITION BY StaffNumber ORDER BY convert(time,COL1) DESC) AS rn 
FROM @TEST 

但是,必須有一個更簡單更有效的方法來做到這一點。有任何想法嗎?

回答

4

計算後的ROW_NUMBER。我想你需要UNION ALL

+1

太好了,謝謝。 – user3219693