Ich habe eine Tabelle:Wie der nächste Wert in einer Tabelle finden auf der Grundlage bestimmter Kriterien
ID | Name | Date
1 | ABC | 2015-01-01
2 | XYZ | 2015-01-02
3 | ABC | 2015-01-03
4 | ABC | 2015-01-04
Ich möchte diese Tabelle so fragen, dass das Ergebnis wird:
ID | Name | Date | NextDate
1 | ABC | 2015-01-01 | 2015-01-03
2 | XYZ | 2015-01-02 | null
3 | ABC | 2015-01-03 | 2015-01-04
4 | ABC | 2015-01-04 | null
One Lösung ist:
select t1.*,
(select min(t2.Date) from TAB t2 where t2.ID > t1.ID t2.Name = t1.Name) NextDate
from TAB t1
Aber das ist sehr langsam, da wir Aggregation auf jeder Reihe tun. Gibt es dafür eine alternative Lösung, die effizienter ist als oben?
Jede Chance, von der SQL Server 2008 bis 2012 oder neuer aktualisieren? Die Funktion [lead] (https://msdn.microsoft.com/en-us/library/hh213125.aspx) scheint genau zu Ihrer Rechnung zu passen. – Mureinik