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
但是,必須有一個更簡單更有效的方法來做到這一點。有任何想法嗎?
太好了,謝謝。 – user3219693