Désolé pour le titre boiteux, mes compétences descriptives sont pauvres aujourd'hui.SQL Server, comment joindre une table dans un format "pivoté" (renvoyer des colonnes au lieu de lignes)?
En un mot, j'ai une requête similaire à ce qui suit:
SELECT P.LAST_NAME, P.FIRST_NAME, D.DEMO_GROUP
FROM PERSON P
JOIN PERSON_DEMOGRAPHIC PD ON PD.PERSON_ID = P.PERSON_ID
JOIN DEMOGRAPHIC D ON D.DEMOGRAPHIC_ID = PD.DEMOGRAPHIC_ID
Cette retourne sortie comme ceci:
LAST_NAME FIRST_NAME DEMO_GROUP
---------------------------------------------
Johnson Bob Male
Smith Jane Female
Smith Jane Teacher
Beeblebrox Zaphod Male
Beeblebrox Zaphod Alien
Beeblebrox Zaphid Politician
Je préfère la sortie soit similaire à ce qui suit:
LAST_NAME FIRST_NAME Male Female Teacher Alien Politician
---------------------------------------------------------------------------------------------------------
Johnson Bob 1 0 0 0 0
Smith Jane 0 1 1 0 0
Beeblebrox Zaphod 1 0 0 1 1
Le nombre de lignes dans le tableau DEMOGRAPHIC varie, donc je ne peux pas dire avec certitude comment beaucoup de colonnes dont j'ai besoin. La requête doit être flexible.
Oui, il serait trivial de le faire dans le code. Mais cette requête est un élément d'un ensemble complexe de procédures stockées, de vues et de services de génération de rapports, dont beaucoup sont en dehors de ma sphère d'influence. J'ai besoin de produire cette sortie dans la base de données pour éviter de casser le système. Des idées?
Il s'agit en fait de MS SQL Server 2005.
Merci.
Astuce: Jetez un oeil à PIVOT http://msdn.microsoft.com/en-us/library/ms177410.aspx –
Les requêtes dans ces réponses vous obtiendrez sur la bonne voie: http: // stackoverflow.com/questions/2433445/sql-join-problem/2433561#2433561 – AaronLS