カラム値が変更されたテーブルの行を決定し、その結果をテーブルに出力することに関する質問(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
がどのようにのように、あまりにも、I出力テーブルに結果を実行します。
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