Bonjour à tous,
Je bloque devant un calcul dont j'aimerai trouver une solution élégante.
J'ai une table définie comme suit :
La colonne DataKind correspond au type comme suit :
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 declare @data table (DataDate smalldatetime, DataKind int, DataValue int) insert into @data select '20140101',0,2 union select '20140102',0,2 union select '20140103',0,2 union select '20140104',1,1 union select '20140105',0,2 union select '20140106',2,3 union select '20140107',0,2 union select '20140108',0,2
- 0 = Ajouter
- 1 = Soustraire
- 2 = Appliquer
- 3 = Limiter
J’essaie d'éviter de faire une boucle ou un curseur pour gagner en performance.
Les 2 premier type sont simple mais j'ai un problème avec Appliquer.
Il faudrait que ma variable @startdate contiennent la date du dernier enregistrement de type kind=2 sur l'intervalle de date donné mais je ne sais pas comment faire cela en une seule requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 declare @startdate smalldatetime, @enddate smalldatetime set @startdate = '20140101' set @enddate = '20141231'; select sum(case datakind when 0 then DataValue when 1 then DataValue*-1 else 0 end) from @data where dataDate between @startdate and @enddate)
Pourriez vous me donner un petit coup de pouce ?
Partager