2010-12-10 3 views
1

Hallo betrachtet eine Tabelle wie diese alt textmysql Abfrage entlang Zeitstempel, die sowohl die Achse (dh) in beiden Spalten und Zeilen

Jetzt brauche ich eine Ausgabe wie diese

alt text

dies meine Anforderung. Ich habe hier nur 3 Anmeldetermine angegeben. Beachten Sie, dass es N Registrierungsdaten und Gültigkeitsdaten gibt. wie schreibe ich eine Abfrage dafür. Danke für die Hilfe.

+0

Ich denke nicht, dass dies mit einer Abfrage durchgeführt werden kann. Suchen Sie nach einer Querverweisabfrage. Ein Ergebnis ist dies (obwohl ich das nie getan habe, ich mache es nur über Code): http://rpbouman.blogspot.com/2005/10/creating-crosstabs-in-mysql.html – xecaps12

+0

Wirklich traurig, dass MySQL doesn Unterstütze Pivots nicht. Das ist das genaue Werkzeug, das Sie brauchen, um dieses Problem zu lösen. –

Antwort

0

Was Sie suchen, wird oft als Kreuztabelle bezeichnet. Hier ist ein Beispiel, das die Ergebnisse produzieren würden Sie wollen:

Select registrationDate 
    , Sum(Case When ValidityDate = '2010-10-25' Then 1 Else 0 End) As `2010-10-25` 
    , Sum(Case When ValidityDate = '2010-10-26' Then 1 Else 0 End) As `2010-10-26` 
    , Sum(Case When ValidityDate = '2010-10-27' Then 1 Else 0 End) As `2010-10-27` 
From MyTable 
Group By registrationDate 

Wenn das, was Sie wollen, ist, um dynamisch die Spalten aufzubauen, führen Sie eine dynamische Kreuztabelle zu suchen. Die SQL-Sprache ist im Allgemeinen nicht auf die dynamische Spaltengenerierung ausgelegt, und daher kann dies in nativ in MySQL ohne Verwendung von dynamischem SQL nicht durchgeführt werden. Stattdessen sollten Sie diese Abfrage in Ihrer mittleren Ebene oder Berichts-Engine erstellen.

Verwandte Themen