PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CASE THEN ELSE - Abfrage


Tikiwiki
17.01.2006, 11:24:02
Hallo zusammen,

Ich habe da eine Aufgabe bekommen und häng da ein wenig an der Umsetzung. Mysql kann das im Prinzip aber im Endspurt haberts an meiner Unwissenheit.
Ich habe eine Tabelle mit folgender Struktur:

id | datumzeit | wert | methode
1 | 2005-01-13 02:00:00 | 34.5 | GS1
2 | 2005-01-13 04:00:00 | 10.4 | GS1
3 | 2005-01-13 02:00:00 | 13.6 | GS3
4 | 2005-01-13 03:00:00 | 26.8 | GS3

Folgendes Ergebnis möchte ich haben (Anmerkung: 0 = 00.0, nur damit die Tabelle etwas schöner aussieht):

datumzeit | GS1 | GS3
2005-01-13 02:00:00 | 34.5 | 13.6
2005-01-13 03:00:00 | 00.0 | 26.8
2005-01-13 04:00:00 | 10.4 | 00.0

Folgende Abfrage habe ich zur Zeit:

SELECT datumzeit,
CASE WHEN methode = 'GS1' THEN wert ELSE 0 END AS GS1,
CASE WHEN methode = 'GS3' THEN wert ELSE 0 END AS GS3
FROM `testtabelle`
GROUP BY datumzeit

Als Ergebnis daraus bekomm ich aber:

datumzeit | GS1 | GS3
2005-01-13 02:00:00 | 34.5 | 00.0
2005-01-13 03:00:00 | 00.0 | 26.8
2005-01-13 04:00:00 | 10.4 | 00.0

Sprich es wird der Wert 13.6 nicht GS3 zugeordnet (3 DS der Ausgangstabelle)

Wo mache ich einen Fehler? Vielleicht hat wer einen Rat.

Danke Euch
Dietmar

R. Woitaschik
17.01.2006, 11:34:22
Hi Dietmar,
versuch es doch mal mit der Summenbildung:
SELECT datumzeit,
SUM(CASE WHEN methode = 'GS1' THEN wert ELSE 0 END) AS GS1,
SUM(CASE WHEN methode = 'GS3' THEN wert ELSE 0 END) AS GS3
FROM `testtabelle`
GROUP BY datumzeit

Gruß
Richard

Tikiwiki
17.01.2006, 11:42:00
Hi Richard,

daaaanke. Das wäre sicher das nächste gewesen was ich probiert hätte :-)
Und ich habe eher mal auf AND/OR getippt.

Wieder was gelernt und für mich gibts noch viel mehr zu lernen.

Danke nochmals.
Dietmar