ich die unten haben.(Set-basiert) in 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
Die gewünschte Ausgabe ist
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
Wie das gleiche mit TSQL in einem Satz basierten Ansatz zu erreichen.
DDL wie unter
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
Ich verstehe nicht, wie Sie die gewünschte Ausgabe sind herauszufinden. Wie entscheiden Sie, wie das Enddatum ist? Zum Beispiel in der gewünschten Ausgabe haben Sie einen Datensatz: Name Startdatum Enddatum A 2011-01-01 01: 00: 00.000 2011-04-01 04: 00: 00.000 Aber die Eingabe hatte dieses Datum 2011- 04-01 04: 00: 00.000 mit Name B verbunden. Wie bestimmen wir, wie das Enddatum für einen Datensatz sein soll. Was ist die Definition eines Datensatzes? – richard
Das Enddatum eines Datensatzes ist das Startdatum eines anderen Datensatzes. So A die Startd Datum ist 2011-01-01 01: 00: 00.000 aber B ist 2011-04-01 04: 00: 00.000. Das Enddatum von A ist 2011-04-01 04: 00: 00.000. Ebenso hat das A, das B folgt, ein Startdatum als 2011-05-01 07: 00: 00.000, was das Enddatum für B. –
ist. Aber woher wissen Sie, welcher Datensatz als Enddatum eines bestimmten Datensatzes ausgewählt werden soll ? – richard