Anmelden

View Full Version : SQL: Anzahl Spalten die einen Wert enthalten -pro Datensatz



ExAzubi
12-08-15, 15:25
Hallo zusammen,

stehe gerade ein wenig auf dem Schlauch. Ich habe eine exemplarische Tabelle:



ARTIKEL ABS01 ABS02 ABS03 ABS04 ABS05 ABS06 ABS07 ABS08 ASB09 ASB10
AUTO1 1 2 0 4 0 0 5 1 0 1
AUTO2 3 0 0 0 0 0 0 0 0 1
AUTO3 0 1 0 0 0 0 0 1 0 0


Gibt es in SQL eine Funktion, in der ich mir die Anzahl Spalten ermittlen kann, die ungleich 1 sind???

Also

AUTO1 = 6
AUTO2 = 2
AUTO3 = 2

Quasi ein ZÄHLEWENN aus Excel...

Danke an alle Helfenden...

B.Hauser
12-08-15, 15:46
Versuch's mal so:


Select Case When ABS01 <> 1 Then 1 Else 0 End +
Case when ABS02 <> 1 Then 1 Else 0 End +
....
Case When ABSN <> 1 then 1 Else 0 End AnzSpalten
From YourTable

Birgitta

ExAzubi
13-08-15, 06:41
Hallo Brigitta,

danke, daran habe ich auch gedacht, aber noch gehofft das es eine Art Conditional_Coloum_Count() Funktion gibt :)

Fuerchau
13-08-15, 08:46
Namen sind Schall und Rauch.
Woher soll eine solche Funktion denn wissen, welche Spalten denn gemeint sind?
Und ob der Wert numerisch, Alpha, Datum oder NULL hat soll die Funktion auch noch unterscheiden?

Nun kannst du dir eine SQL-Function entwickeln, die den einzelnen Case-Ausdruck enthält und dir eben 0 oder 1 liefert.
Dann kannst du einfach MyCnt(Name1) + MyCnt(Name2) + irgendwas kodieren. Aber glaube mir, das wird dann langsamer.