私は以下のものを持っています。T-SQLで開始日と終了日を設定します。
Name Date
A 2011-01-01 01:00:00.000
A 2011-02-01 02:00:00.000
A 2011-03-01 03:00:00.000
B 2011-04-01 04:00:00.000
A 2011-05-01 07:00:00.000
所望の出力は、セットベースのアプローチで同じ使用TSQLを達成する方法
Name StartDate EndDate
-------------------------------------------------------------------
A 2011-01-01 01:00:00.000 2011-04-01 04:00:00.000
B 2011-04-01 04:00:00.000 2011-05-01 07:00:00.000
A 2011-05-01 07:00:00.000 NULL
あります。
DECLARE @t TABLE(PersonName VARCHAR(32), [Date] DATETIME)
INSERT INTO @t VALUES('A', '2011-01-01 01:00:00')
INSERT INTO @t VALUES('A', '2011-01-02 02:00:00')
INSERT INTO @t VALUES('A', '2011-01-03 03:00:00')
INSERT INTO @t VALUES('B', '2011-01-04 04:00:00')
INSERT INTO @t VALUES('A', '2011-01-05 07:00:00')
Select * from @t
希望の出力をどのように計算しているのか分かりません。どのように終了日を決定するのですか?たとえば、希望する出力にレコードがあります。 名前開始日終了日 A 2011-01-01 01:00:00.000 2011-04-01 04:00:00.000 入力は、 04-01 04:00:00.000 B.名前とレコードの終了日を決定するにはどうすればよいですか?レコードの定義は何ですか? – richard
レコードの終了日は、別のレコードの開始日です。 Aの開始日は2011-01-01 01:00:00.000ですが、Bは2011-04-01 04:00:00.000です。したがって、Aの終了日は2011-04-01 04:00:00.000です。同様に、Bに続くAは、Bの終了日である2011-05-01 07:00:00.000として開始日を持っています。 –
しかし、どのレコードを特定のレコードの終了日としてどのように知ることができますか? – richard