2010-12-10 1 views
1

Hi considérer une table comme celui-ci alt textrequête mysql en ayant l'horodatage le long des deux l'axe (ie) dans les deux colonnes et les lignes

Maintenant, j'ai besoin d'une sortie comme celui-ci

alt text

c'est mon exigence. Je viens de donner 3 jours de dates d'inscription ici. Considérez qu'il y a N nombre de dates d'inscription et de dates de validité. comment écrire une requête pour cela. Merci de m'avoir aidé.

+0

Je ne pense pas que cela puisse être fait avec une requête. Effectuez une recherche pour une requête de tabulation croisée. Un résultat est ceci (bien que je n'ai jamais fait ceci, je le fais juste via le code): http://rpbouman.blogspot.com/2005/10/creating-crosstabs-in-mysql.html – xecaps12

+0

Vraiment triste que MySQL doesn ne supporte pas Pivots. C'est l'outil exact dont vous avez besoin pour résoudre ce problème. –

Répondre

0

Ce que vous recherchez est souvent appelé un tableau croisé. Voici un exemple qui produirait les résultats souhaités:

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 

Si ce que vous voulez est de construire dynamiquement les colonnes, vous êtes à la recherche d'un tableau croisé dynamique. Le langage SQL en général n'est pas conçu autour de la génération de colonnes dynamiques et donc cela ne peut pas être fait nativement dans MySQL sans utiliser le SQL dynamique. Au lieu de cela, vous devez générer cette requête dans votre moteur de niveau intermédiaire ou de rapport.

Questions connexes