1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
DECLARE @Histo TABLE(
Lib VARCHAR(50)
,Val INT
,Dte DATETIME
)
INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',897, '2011-01-05 12:31:29.241')
INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',25,'2011-01-05 12:31:32.241')
INSERT INTO @Histo VALUES('Balise_106_3_A_Alpha',400,'2011-01-05 12:31:35.241')
INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',897, '2011-01-05 12:31:29.241')
INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',24,'2011-01-05 12:31:32.241')
INSERT INTO @Histo VALUES('Balise_106_3_B_Alpha',400,'2011-01-05 12:31:35.241')
;WITH CTE (Lib, Val, Dte, Somme) AS (
SELECT Lib, Val, Dte, 0
FROM(
SELECT lib, val,Dte, MIN(Dte) OVER(PARTITION BY Lib) AS MinDte
FROM @Histo H
)Tmp
WHERE Dte = MinDte
UNION ALL
SELECT Lib, Val, Dte, Somme
FROM(
SELECT H.lib, H.val,H.Dte, MIN(H.Dte) OVER(PARTITION BY H.Lib) AS MinDte, CTE.Somme + H.val AS Somme
FROM @Histo H
INNER JOIN CTE ON CTE.Lib = H.Lib
WHERE H.Dte > CTE.Dte
)Tmp
WHERE Dte = MinDte
)
SELECT Lib, Val, Dte, Somme
FROM CTE
ORDER BY Lib, Dte |
Partager