1 Abfrage 2 Spalten und 3 Zeilen

ridgero

Neuer Benutzer
Beiträge
3
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:

ParameterIDZeit
3202022-10-19 13:00
321IS NULL
3222022-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
 
Werbung:
vermutlich hast bzw. willst Du sowas:

Code:
postgres=# select * from ridgero;
 id  |        zeit         
-----+---------------------
 320 | 2022-01-01 00:00:00
 320 | 2022-10-01 00:00:00
 321 | 
 322 | 2022-10-11 00:00:00
(4 rows)

postgres=# select id, max(zeit) from ridgero group by id order by id;
 id  |         max         
-----+---------------------
 320 | 2022-10-01 00:00:00
 321 | 
 322 | 2022-10-11 00:00:00
(3 rows)

postgres=#
 
falls es Dir von selber nicht gelingt, da noch ein WHERE einzubauen ...

Code:
postgres=# select id, max(zeit) from ridgero where id in (320, 321, 322) group by id order by id;
 id  |         max         
-----+---------------------
 320 | 2022-10-01 00:00:00
 321 | 
 322 | 2022-10-11 00:00:00
(3 rows)

postgres=# select id, max(zeit) from ridgero where id in (320, 321) group by id order by id;
 id  |         max         
-----+---------------------
 320 | 2022-10-01 00:00:00
 321 | 
(2 rows)

postgres=#
 
Werbung:
Habs gleich ausprobiert, funktioniert einwandfrei, hab das WHERE noch gleich dazugebaut, sonst hätte das QUERY ewig gedauert.

Vielen herzlichen Dank!!!

:D
 
Zurück
Oben