2017-11-26 2 views
-1

Wie finden Sie die Gesamtzahl der Tage aus der Tabelle unten? Ich habe mit DATEDIFF Funktion versucht, aber ich kann mein Ergebnis nicht bekommen.SQL Server Datum Unterschiede

date      days 
------------------------------- 
2017/11/10 
2017/11/12 
2017/11/15 

Unterschied zwischen Tag sollte sein wie

2017/11/12-2017/11/10, 2017/11/15-2017/11/12. 
+0

Welche Version von SQL Server verwenden Sie? –

+0

SQL-Server 2005 –

Antwort

2

Sie LAG (SQL Server 2012 und höher) verwenden:

CREATE TABLE t(d DATE); 
INSERT INTO t(d)VALUES ('2017-11-10'), ('2017-11-12'), ('2017-11-15'); 

SELECT *, DATEDIFF(day, LAG(d) OVER(ORDER BY d ASC),d) 
FROM t; 

Rextester Demo

für SQL Server 2005 Sie könnten verwenden:

SELECT s.*, DATEDIFF(day, s2.d, s.d) AS days 
FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY d) AS rn FROM t) s 
LEFT JOIN (SELECT *, ROW_NUMBER() OVER(ORDER BY d) AS rn FROM t) s2 
    ON s.rn = s2.rn+1; 

Rextester Demo2