Bonjour à tous!
Je dois réaliser un script de reprise de données entre 2 tables sur SQL Server 2008.
Mon problème vient de la structure de la table source qui ressemble à ceci :
UserId | TypeInformation | Valeur
---------------------------------
1 | Email | 'toto@yopmail.com'
1 | DateNaissance | '27/08/1970'
2 | Email | 'titi@yopmail.com'
2 | DateNaissance | '14/10/1987'
2 | Pays | 'France'
Chaque information associée à un user est stockée dans une ligne propre.
Le nombre d'informations (et donc de lignes) par user est variable.
Je déteste cette table...
Dans ma table de destination j'ai une structure à plat :
UserId | Email | DateNaissance | Pays
------------------------------------------------------
1 | 'toto@yopmail.com' | '27/08/1970' | null
2 | 'titi@yopmail.com' | '14/10/1987' | 'France'
Je dois donc écrire la requête qui me permet de transférer les données d'une table à l'autre.
Je pourrais éventuellement le faire en multipliant les auto-jointures pour chaque propriété mais d'une part ce serait dégueulasse et d'autre part vraiment sale côté optimisation (la table source à près d'1 million de lignes)...
Je me suis renseigné du côté de l'instruction PIVOT en sql, mais elle semble nécessiter une fonction d'aggrégation sur un champ pour fonctionner, ce qui n'est pas mon cas.
J'aimerais déjà savoir si ce que je cherche à faire est réalisable (j'imagine bien que oui...) et s'il existe un mot-clé ou une instruction sql miracle qui me permettrait de simplifier tout ça.
J'espère avoir été suffisamment clair
Merci d'avance!
Partager