SQL: vue Dynamique avec des noms de colonne basée sur les valeurs de la colonne dans la table source
Donné les deux exemples de tableaux ici:
Billets Table
ID User Description
0 James This is a support ticket
1 Fred This is a ticket too
Tableau Des Propriétés
ID TicketID Label Value
0 0 Engineer Scott
1 1 Engineer Dale
2 0 Manu Dell
3 1 Manu HP
4 0 OS Windows
5 1 OS Linux
Comment puis-je arriver à une vue comme:
ID User Description Engineer Manu OS
1 James This is a support ticket Scott Dell Windows
2 Fred This is a ticket too Dale HP Linux
Il est important de noter que les propriétés de la table ne serait pas toujours le même. Certains "Billets" peut avoir les propriétés que d'autres ne le font pas.
Est-ce même possible?
- Les tables de propriétés sont le diable.
- donc, peut-codage en dur des noms de propriété en tant que noms de colonne. Les deux ont leur place.
- encore une fois, je ne suis pas en désaccord avec vous... mais chaque fois que je dois utiliser la propriété tableaux I ont presque toujours des problèmes de performance, et ils sont généralement une douleur dans le cul de pivot.
- mais qui ne représentent pas nécessairement tous les temps pour tout le monde - j'ai utilisé de la VAE, avec succès, dans le passé, j'ai même écrit un billet à ce sujet parce que beaucoup de gens ont cette couverture de l'opinion que c'est une chose terrible. sqlblog.com/blogs/aaron_bertrand/archive/2009/11/19/... C'est comme les curseurs. Sont-ils mauvais en général? Oui. Sont-ils toujours mauvais? Absolument pas.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez effectuer cette opération avec un PIVOT. Quand on fait le tableau croisé, vous pouvez le faire de deux façons, avec un Statique Pivot qui vous code les lignes à transformer ou à une Dynamique de Pivot qui va créer la liste des colonnes au moment de l'exécution:
Statique Dynamique (Voir SQL Violon pour la Démo):
Ou vous pouvez utiliser une Dynamique de Pivot (Voir SQL Violon pour la Démo):
De la requête vous obtiendrez les mêmes résultats.
TYPE
et.value()
de la requête XML. L'appel à.value()
est inutile sans laTYPE
.)