Hallo allemaal ik ben hier net nieuw, uiteraard omdat ik een probleempje
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
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

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 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 -
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: