Zusammenfassung Abfrage von mehreren Feldern in SQL

stimmen
1

Datentabelle Struktur ist:
ID1, ID2, ID3, ID4, ... (einige andere Felder).
Ich möchte Zusammenfassung Abfrage erstellen, um herauszufinden , wie oft einig ID - Wert in jeder Spalte verwendet wird.

Daten
1,2,3,4,2008
2,3,5,1,2008
1,3,2,5,2007
1,2,3,6,2007
3,1,2,5,2007

Für Wert 1, sollte das Ergebnis sein
1,0,0,1,2008
2,1,0,0,2007

Wie dies zu erreichen, mit einer Abfrage (in MySQL).

Veröffentlicht am 09/12/2008 um 20:32
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
1

Dies scheint die beste Lösung (von Wiki ):

select years,
sum(1*(1-abs(sign(id1-56)))) as id1,
sum(1*(1-abs(sign(id2-56)))) as id2,
sum(1*(1-abs(sign(id3-56)))) as id3,
sum(1*(1-abs(sign(id4-56)))) as id4,
from mytable
group by years
Beantwortet am 09/12/2008 um 21:22
quelle vom benutzer

stimmen
1

Verwenden, um ein Merkmal oder Delta-Funktion:

DECLARE @look_for AS int
SET @look_for = 1

SELECT SUM(CASE WHEN id1 = @look_for THEN 1 ELSE 0 END) AS id1_count
    ,SUM(CASE WHEN id2 = @look_for THEN 1 ELSE 0 END) AS id2_count
    ,SUM(CASE WHEN id3 = @look_for THEN 1 ELSE 0 END) AS id3_count
    ,SUM(CASE WHEN id4 = @look_for THEN 1 ELSE 0 END) AS id4_count
FROM tbl

Es gibt Möglichkeiten, (eine Technik, mit Kreis- und UNPIVOT in SQL Server auch die ANSI ist nicht), um diese zu codieren erzeugen basierend auf dem Tisch und die eindeutigen ID-Werten auch.

Beantwortet am 09/12/2008 um 20:43
quelle vom benutzer

stimmen
0

wählen

(SELECT COUNT (ID1) von t1, wo ID1 = @param) als ID1,

(SELECT COUNT (ID2) von t2 wo ID2 = @param) als ID2

Beantwortet am 09/12/2008 um 20:47
quelle vom benutzer

stimmen
-1

wenn X die ID-Wert Sie suchen ist, würden Sie es so etwas tun.

select (select count(*) where id1 = X) as countid1 ... etc
Beantwortet am 09/12/2008 um 20:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more