我發佈了一個問題(Find Row Changes and Output to Table),該問題涉及確定列值發生變化的表中的行,並將結果輸出到表中。 (當然,從公認的答案幫助,)成功的查詢結果如下:查找行更改(帶重複項)並輸出到表
;with x as (
select *, row_number() over(partition by ModelNum order by transdate) rn
from table
)
select ModelNum, TransDate as 'StartTime', lead(TransDate) over (order by TransDate) as 'EndTime' from x where rn = 1
我的問題,雖然是原來的表中有重複的ModelNum
,但我是從使用的代碼解決方案沒有考慮到它們。它只是掃描整個表格並尋找第一個和最後一個值。換句話說,如果原來的表是這樣的:
id TransDate PartType
======================================
1 2016-06-29 10:23:00 A
2 2016-06-29 10:30:00 A
3 2016-06-29 10:32:00 C
4 2016-06-29 10:33:00 C
5 2016-06-29 10:35:00 C
6 2016-06-29 10:39:00 A
7 2016-06-29 10:41:00 A
8 2016-06-29 10:43:00 B
我如何將結果輸出到一個表,這樣重複列太多,就像這樣:
PartType StartTime EndTime
=======================================================
A 2016-06-29 10:23:00 2016-06-29 10:32:00
C 2016-06-29 10:32:00 2016-06-29 10:39:00
A 2016-06-29 10:39:00 2016-06-29 10:43:00
B 2016-06-29 10:43:00 NULL
此外,在原來的問題,我正在使用SQLServer 2008,但現在我使用2014.
優雅。謝謝 – controller