Unter Oracle gibt es die Funktion Decode, die dir Inhalte nach beinah beliebigem Muster konvertieren läßt. Ich hätte sie verwendet, um aus der Zeichenkette ’ ’ einen numerischen Wert 1 zu machen und aus allen anderen eine 0. Darüber kannst du dann schön summieren:
Select V, B, S, DECODE(S, ' ', 1, 0) Summenfeld
From Tabelle
zeigt dir den neuen Spaltenwert „Summenfeld“,
Select V, B, SUM(DECODE(S, ' ', 1, 0)) S\_Leer, Count(\*)
From Tabelle
Group by V, B
zeigt die Summe so, wie sie dir vorschwebt.
DB2 kennt nun kein Decode, aber nach ausführlichen Recherchen (http://www.google.com/search?hs=Uio&hl=de&c2coff=1&c… ) habe ich festgestellt, daß es trotzdem eine Möglichkeit gibt: SELECT CASE (http://expertanswercenter.techtarget.com/eac/knowled… ).
Dein SQL müßte dann in etwa so aussehen:
Select V, B, SUM(SELECT CASE S
WHEN ' ' THEN 1
ELSE 0
END CASE) AS S\_LEER,
Count(\*)
From Tabelle
Group by V, B
Achtung, ich kenne DB2 nicht - zwei mögliche Pferdefüße:
- SELECT CASE liefert nur Stringausdrücke - in dem Fall müßte der Ausdruck mittels VAL in eine Zahl konvertiert werden.
- Keine Ahnung, ob sich SELECT CASE syntaktisch in ein SQL-Statement so einbauen läßt. Probier es aus!
Gruß
Sancho