Bonjour
Je cherche a consolider des valeurs, champ COL_VALEUR en les sommant sur un interval de temps (par exemple 5 minutes).

Voila le code pour la création de la table source

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
GO
IF OBJECT_ID ('dbo.T1', 'U') IS NOT NULL
    DROP TABLE dbo.T1;
GO
CREATE TABLE dbo.T1 
(
COL_TIMESTAMP int IDENTITY,
COL_FORMATEDDATE datetime,
COL_VALEUR bigint NULL );
 
GO
DECLARE @datetime datetime;
SET @datetime = '2010-1-1 00:00:000';
 
DECLARE @Counter int ;
SET @Counter= 1 ;
 
WHILE @Counter <= 50 
BEGIN
 INSERT INTO dbo.T1 (COL_FORMATEDDATE,COL_VALEUR) VALUES (DATEADD ( mi, @Counter , @datetime ),'1');
SET @Counter = @Counter + 1;
 
END;
GO
SELECT COL_TIMESTAMP,COL_FORMATEDDATE,COL_VALEUR
FROM dbo.T1;
GO
Dans cet table les dates heures sont alignes sur la minute mais ils peuvent être n'importe quand et à intervals irréguliers

Un fois traité la commande sql doit retourner:

Un timestamp a valeur juste et la somme des valeurs consolidés sur les 5 minutes par exemple.

2010-01-01 00:00:00 5
2010-01-01 00:05:00 5
2010-01-01 00:10:00 5
2010-01-01 00:15:00 5
...

Je suis sec car vraiment peu habitué à manipuler TRANSACT SQL et la fonction SELECT. J'ai cheché des solutions avec DATEDIFF, DATE PARt et DATEADD mais sans succes.
Vos idées sont les bienvenues