SQL query met aftrekken

Status
Niet open voor verdere reacties.

DomoPeter

Nieuwe gebruiker
Lid geworden
15 apr 2012
Berichten
1
Hallo allemaal ik ben hier net nieuw, uiteraard omdat ik een probleempje :D heb.

Ik ben bezig met mijn eigen Domotica project en 1 van de onderdelen daarvan is het verzamelen van de Energie verbruiken.

Ik heb een SQL2005 express tabel net de volgende velden:
TimeStamp ( SmallDateTime), Elektra (Int), ElektraZon (Int), Gas (Int), Water (Int)

Elk uur log ik de tellerstanden
10/04/2012 00:00 , 3634,1000,999,6
10/04/2012 01:00 , 3658,1020,1010,6
10/04/2012 02:00 , 3701,1050,1044,6
10/04/2012 03:00 , 3888,1091,1055,6
10/04/2012 05:00 , 4008,1091,1075,6
10/04/2012 05:00 , 4078,1091,1085,6

Nu wil ik graag de uur verbruiken weten en heb ik dus een query gemaakt
Code:
SELECT     a.Timestamp, a.Elektra, ISNULL(b.Elektra, 0) - a.Elektra AS diff
FROM         Energie AS a LEFT OUTER JOIN
                      Energie AS b ON b.Timestamp = DATEADD(hour, 1, a.Timestamp)
WHERE     (DATEPART(n, a.Timestamp) = 0)

Deze werkt goed todat er een waarde mist zoals in he bovenste voorbeeld tabelletje is te zien dat er om 04:00 niets is weggeschreven
Dit geeft een negatieve uitkomst te zien, ik wil graag dat indien er 1 uur mist dat de query dan ook niets uitvoerd en bij de laatste record dat er ook geen waarde getoond wordt. ( (ISNULL(b.Elektra, 0) bevat de waarde 0 ? )

Onderstaande is de query uit het systeem met 1 maal onderbreking en de laatste record ook als -

Timestamp elektra Diff
14-4-2012 12:00:00 35681572 500
14-4-2012 13:00:00 35682072 758
14-4-2012 14:00:00 35682830 144
14-4-2012 15:00:00 35682974 84
14-4-2012 16:00:00 35683058 194
14-4-2012 17:00:00 35683252 1010
14-4-2012 18:00:00 35684262 1076
14-4-2012 19:00:00 35685338 904
14-4-2012 20:00:00 35686242 322
14-4-2012 21:00:00 35686564 -35686564
14-4-2012 23:00:00 35686880 332
15-4-2012 0:00:00 35687212 290
15-4-2012 1:00:00 35687502 210
15-4-2012 2:00:00 35687712 204
15-4-2012 3:00:00 35687916 206
15-4-2012 4:00:00 35688122 210
15-4-2012 5:00:00 35688332 204
15-4-2012 6:00:00 35688536 212
15-4-2012 7:00:00 35688748 1292
15-4-2012 8:00:00 35690040 486
15-4-2012 9:00:00 35690526 476
15-4-2012 10:00:00 35691002 386
15-4-2012 11:00:00 35691388 -35691388

( later breid ik de WHERE nog uit met begin en einddatum aangeizen hij na een 1 jaar natuurlijk heel veel resultaten oplevert.
Nu staat hier een Minuten clausule aangeizen ik eerst per minuut gelogd heb)


Peter
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan