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à
Il me dit :
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
Merci pour votre aide.Msg*156, Niveau*15, État*1, Ligne*9
Syntaxe incorrecte vers le mot clé 'FOR'.
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)
Partager