Hallo zusammen,
ich bin recht neu bei SQL und bin mit einer Abfrage überfodert.
Tabelle: Signale
Spalten: ParameterID, Zeit
ParameterID: 320 / 321 / 322
Mein Szenario:
Jedes Mal, wenn ein Parameter ein Update in der Tabelle bekommt, wird die entsprechende Zeit des Parameters in der Tabelle abgelegt.
Mein Ziel der Abfrage: Zeige mir die jeweils letzte aktualisierte Zeit der Parameter 320 / 321 / 322 an. Zeig mir auch an, wenn kein Wert vorhanden ist.
Es sollte dann so aussehen:
Habs mit verschiedenen Abfragen probiert, komme nicht auf das Ergebnis
SELECT DISTINCT TOP 3 ParameterID, Zeit
FROM Signale
WHERE ParameterID IN (320,321,322)
ORDER BY ParameterID
SELECT DISTINCT ParameterID,
CASE
WHEN ParameterID = 320 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 320,
CASE
WHEN ParameterID = 321 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 321,
CASE
WHEN ParameterID = 322 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 322
FROM Signale
WHERE ParameterID IN (320, 321, 322)
Danke für eure Hilfe!
Ich weiss es sehr zu schätzen, ich lerne täglich etwas Neues dazu
Danke und lieben Gruss
Wolfgang
ich bin recht neu bei SQL und bin mit einer Abfrage überfodert.
Tabelle: Signale
Spalten: ParameterID, Zeit
ParameterID: 320 / 321 / 322
Mein Szenario:
Jedes Mal, wenn ein Parameter ein Update in der Tabelle bekommt, wird die entsprechende Zeit des Parameters in der Tabelle abgelegt.
Mein Ziel der Abfrage: Zeige mir die jeweils letzte aktualisierte Zeit der Parameter 320 / 321 / 322 an. Zeig mir auch an, wenn kein Wert vorhanden ist.
Es sollte dann so aussehen:
ParameterID | Zeit |
320 | 2022-10-19 13:00 |
321 | IS NULL |
322 | 2022-10-10 10:00 |
Habs mit verschiedenen Abfragen probiert, komme nicht auf das Ergebnis
SELECT DISTINCT TOP 3 ParameterID, Zeit
FROM Signale
WHERE ParameterID IN (320,321,322)
ORDER BY ParameterID
SELECT DISTINCT ParameterID,
CASE
WHEN ParameterID = 320 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 320,
CASE
WHEN ParameterID = 321 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 321,
CASE
WHEN ParameterID = 322 AND Time NOT Like '1900%' THEN Time
ELSE 0
END AS 322
FROM Signale
WHERE ParameterID IN (320, 321, 322)
Danke für eure Hilfe!
Ich weiss es sehr zu schätzen, ich lerne täglich etwas Neues dazu

Danke und lieben Gruss
Wolfgang