Klaus Mock: SQL Statement

Beitrag lesen

Hallo,

ID    SP1     SP2      SP3     SP4    SP5      SP6

1    1 2 2 6 3 4
2     3 3 3 1 3 3
3   2 3 2 4 1 3
4     3 5 2 4 2 6
5    3 6 1 2 1 3

So sieht etwa meine Datenbank aus. Nun möchte ich gerne wissen wie oft in SP1 die Zahl 1 vorkommt, das gleich für die Zahl 2,3,4,5,etc.
Und das gleich Spiel für die anderen Spalten.

Wie oft jede Zahl in SP1 sstehet ist recht einfach:
select SP1,count(*) from TABELLE group by SP1

Eine Abfrage zu basteln, welche das gleichzeitig auch für die anderen Spalten macht ist AFAIK mit dieser Datenstruktur nicht möglich. In einigen Datenbanken könntest Du eine Stored-Procedure einsetzen, welche alle 6 Spalten hintereinander zählt, um dann die gesammelten Ergebnisse zurückzuliefern.

Soweit ich mihc mit Datenbanken auskenne, sind Tabellen, in denen durchnummerierbare Spalten verwendet werden (SP1-SP6) nicht gerade gutes Design. Wenn Du beispielsweise die Tabelle so aufgebaut hättest
ID   KATEGORIE   WERT
----------------------
1        1          1
1        2          2
1        3          2
1        4          6
1        5          3
1        6          4
...
5        6          3

(Wobei ID und KATEGORIE zusmamen den Primärschlüssel bilden)

Dann würde die Abfrage so aussehen
select KATEGORIE,WERT,count(*) from TABELLE group by KATEGORIE,WERT

Grüße
  Klaus