bestimmten Wert in einer Zeile zählen

alexfrenzel92

SQL-Guru
Beiträge
122
Ich hab jetzt lang genug gegoogelt und probiert...

In Worten suche ich folgende Abfrage:
Code:
Zähle den Wert X der Tabelle Y in der Zeile, wo die Spalte Z den Wert W hat.

Das kann doch nicht so schwer sein??
 
Werbung:
Code:
SELECT sum(CASE WHEN t.spalteZ = 'W' THEN t.spalteX ELSE 0 END) AS Summe FROM tabelle t
Wobei ich nicht weiß meinst du mit Zählen summieren von X oder unterscheidest du bei X nur zwischen NULL und nicht NULL? Denn eine Zeile gibt es ja immer, 1 zählen kann ich also auch ohne einen Wert X.
 
Code:
SELECT * FROM Tabelle Y WHERE Spalte Z = W
Diese Abfrage ergibt folgendes Ergebnis
Code:
NULL | X | X | I | O | 0 | 123 | 3 | 4 | NULL | Hallo | X | W
Jetzt möchte ich "drei" als Ergebnis haben. Erweitert "vier", wenn ich alle X und I zählen will.
Das bekomme ich hin in einer etwa 12-zeiligen Abfrage aber das muss kürzer gehen dachte ich.

Die meisten Abfragen kann man ja kürzen:
Code:
SELECT 1,2 [...]
kann ja auch vorher
Code:
SELECT 1 UNION ALL SELECT 2 [...]
gewesen sein
 
Code:
SELECT * FROM Tabelle Y WHERE Spalte Z = W
Diese Abfrage ergibt folgendes Ergebnis

sie sollte einen Fehler bringen.

Du hast bzw. suchst wohl sowas wie:

Code:
test=# select * from kaputtes_design ;
 x1 | x2 | x3 | x4 | x5 | y
----+----+----+----+----+---
 x  | x  | x  | y  | z  | a
 x  | x  | y  | y  | z  | b
(2 rows)

test=# select case when x1='x' then 1 else 0 end + case when x2='x' then 1 else 0 end + case when x3 = 'x' then 1 else 0 end + case when x4='x' then 1 else 0 end + case when x5 = 'x' then 1 else 0 end, y from kaputtes_design ;
 ?column? | y
----------+---
  3 | a
  2 | b
(2 rows)

Der Tabellenname ist Programm und soll Dir was mitteilen.
 
Werbung:
Zurück
Oben