hoe moet mijn query zijn om het volgende te bereiken?
ID SampleTime
1 22-Apr-2007 5:29:36
2 21-Apr-2007 7:53:26
3 24-Apr-2007 0:41:46
4 24-Apr-2007 0:41:46
5 24-Apr-2007 22:18:1
Zoals je ziet wordt van elk RecordID de dichtsbijzijnde SampleTime gezocht op basis van zijn huidige SampleTime
Ik wil aan elk RecordID een nieuwe tijd toewijzen. Deze nieuwetijd verkrijg je om de dichtsbijzijnde datum/tijd uit de tabel te vinden. Op basis van de oude datum/tijd.
Bij mijn bijbaantje werd dit gevraagt. Dit moest overigens in mssql2000 gebeuren. Wat mij niet lukt. In mssql2005 lukt mij dit overigens wel. Omdat hier de "Top" functie variabel gebruikt kan worden.
Voorbeeld: "Select top x from tblTest" de x kan hier variabel gebruikt worden.
Dan zet je het dus in een sql while loop. Zodat elk record appart uitgelezen kan worden en de daarbij horende tijd erbij gezocht kan worden.
In MySQL heb je de functie LIMIT die ook variabel gebruikt kan worden. Dus moet het ook lukken. Probleem is nu dus dat er overgestapt naar mssql2005 moet worden. Of de db structuur moet aangepast worden, wat ook weer een karwei opzich is.
Ik had gehoopt dat in deze richting zoeken ging werken:
SELECT DATEDIFF(a.sampletime, b.sampletime)
FROM
tabel AS a
, tabel AS b
probleem is dat het een stored procedure moet worden. En dat geen programmeertaal als php, asp, vb of dergelijke gebruiken. Het wordt dus een onderhoudsfunctie die volledig in SQL moet worden geschreven.