Bonjour

Je découvre le principe du Pivot en SQL 2005. J'ai farfouillé dans les tuto et j'ai trouvé des truc super interressant, mais je n'arrive pas à reproduire les exemples pour mon cas.
Dans ce que j'ai vu, je vois toujours une somme ou une moyenne, enfin une opération de masse. Moi, j'ai juste besoins de retourner la table (sans mauvais jeu de mot....)

En fin de post je mets du code pour créer la table et mettre des données dedans.
Mon contexte : je stocke des infos sur des membres d'un site dans une table sur trois colonnes :
  • l'identifiant du membre
  • l'ID du champ de fomulaire our savoir de quelle info on parle
  • la valeur de l'info elle même

Ceci me permt de faire des formulaires dynamiques qui n'ont pas tous le même nombre de champ. ça marche super bien pour fabriquer des formulaires en ligne à la volée, enregistrer les infos et les restituer. Maintenant il faut que je puisse interroger et faire des sélections de membre.

Donc je me suis dis que je pouvait "retourner" la table pour chaque membre trouvé. Et vu que j'ai entendu parler de PIVOT, je me suis dit que c'était la bonne solution, sauf que j'arrive pas à le mettre en place.

Dans le code qui suit j'ai la table, avec 4 membres qui ont deux info
  • Sexe, Id_Info_Formulaire = 1
  • Statut, Id_Info_Formulaire = 2


Et je voudrais avoir un résulat qui me présente une table qui ferait :
UserId, Sexe, Statut

Lorsque je mets ce code là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT BASE.UserId, [Sexe], [Statut]
 FROM dbo.SITE_Information_Membre BASE
 
PIVOT (
	BASE.Valeur_Info
	FOR BASE.Id_Info_Formulaire IN ([Sexe], [Statut])
) AS P
Il me dit :
Msg*156, Niveau*15, État*1, Ligne*9
Syntaxe incorrecte vers le mot clé 'FOR'.
Merci pour votre aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
CREATE TABLE [dbo].[SITE_Information_Membre](
	[Id_Info_Membre] [int] IDENTITY(1,1) NOT NULL,
	[UserId] [uniqueidentifier] NOT NULL,
	[Id_Info_Formulaire] [int] NULL,
	[Valeur_Info] [varchar](1000) NULL,
) ON [PRIMARY]
 
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (65BB1386-FA7B-4938-A9F0-1853C8998F8C,1,1)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (65BB1386-FA7B-4938-A9F0-1853C8998F8C,2,4)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (FB59EA47-DEC6-4047-89A4-A955A358208A,1,1)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (FB59EA47-DEC6-4047-89A4-A955A358208A,2,3)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (74D5620B-AF20-465E-80BD-291E5CF9E9E7,1,2)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (74D5620B-AF20-465E-80BD-291E5CF9E9E7,2,1)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (A2E43A62-7A77-4616-B8C0-C97C5830537F,1,2)
INSERT INTO dbo.SITE_Information_Membre (UserId, Id_InfoFormulaire, Valeur_Info)   VALUES (A2E43A62-7A77-4616-B8C0-C97C5830537F,2,2)