Hallo zusammen,
ich sitze hier schon seit Tagen an einem Problem und hoffe es kann mir jemand helfen.
Folgendes:
Ich habe eine Datenbank in der die Messwerte verschiedener Sensoren (ca. 30Stück) liegen. Jeder Messwert hat eine Sensor_ID und einen Zeitstempel aufgrund derer die Zeilen eindeutig sind.
Nun müssen die Messwerte der 'nebeneinander liegenden' Sensoren voneinander abgezogen werden. Also immer zwischen zwei Zeilen.
Für Zwei Messwerte habe ich es folgendermaßen gelöst:
[highlight=sql]
Update SensorMW
SET deltaU = 0.5 *
(
Select sum
(
case
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '1' then deltaDC1
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '8' then -deltaDC1
else 0 end
)
from SensorMW
)
where Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '1';
Update SensorMW
SET deltaU = 0.5 *
(
Select sum
(
case
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '8' then deltaDC1
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '9' then -deltaDC1
else 0 end
)
from SensorMW
)
where Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '9';
[/highlight]
Da es sich aber um mehrere Messungen am Tag und mehrere Sensoren handelt, würde ich das gerne dynamisch lösen.
Hat jemand eine Idee oder Vorschläge, wie es anders gehen könnte?
Vielen Dank für eure Hilfe!
ich sitze hier schon seit Tagen an einem Problem und hoffe es kann mir jemand helfen.
Folgendes:
Ich habe eine Datenbank in der die Messwerte verschiedener Sensoren (ca. 30Stück) liegen. Jeder Messwert hat eine Sensor_ID und einen Zeitstempel aufgrund derer die Zeilen eindeutig sind.
Nun müssen die Messwerte der 'nebeneinander liegenden' Sensoren voneinander abgezogen werden. Also immer zwischen zwei Zeilen.
Für Zwei Messwerte habe ich es folgendermaßen gelöst:
[highlight=sql]
Update SensorMW
SET deltaU = 0.5 *
(
Select sum
(
case
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '1' then deltaDC1
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '8' then -deltaDC1
else 0 end
)
from SensorMW
)
where Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '1';
Update SensorMW
SET deltaU = 0.5 *
(
Select sum
(
case
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '8' then deltaDC1
when Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '9' then -deltaDC1
else 0 end
)
from SensorMW
)
where Datum = '2007-01-01 03:00:00.000' and Sensor_ID = '9';
[/highlight]
Da es sich aber um mehrere Messungen am Tag und mehrere Sensoren handelt, würde ich das gerne dynamisch lösen.
Hat jemand eine Idee oder Vorschläge, wie es anders gehen könnte?
Vielen Dank für eure Hilfe!
Comment