Voici une structure de table:noms de colonnes dans le résultat et faites pivoter une partie de la table
'----ID-----'----NAME----'----FIELD1----'----FIELD2----'
' 1 ' val ' 123 ' 321 '
' 2 ' val2 ' 234 ' 212 '
besoin d'obtenir le résultat suivant:
'----ID-----'----NAME----'----FIELDS----'----VALUES----'
' 1 ' val ' FIELD1 ' 123 '
' 1 ' val ' FIELD2 ' 321 '
' 2 ' val2 ' FIELD1 ' 234 '
' 2 ' val2 ' FIELD2 ' 212 '
Comment écrire cette requête? Je peux obtenir des noms de colonnes de INFORMATION_SCHEMA.COLUMNS
. Mais comment joindre la table avec INFORMATION_SCHEMA.COLUMNS
? Aussi comment faire pivoter une partie de la table?
Comme exemple vivant. Voici le tableau:
Sur capture d'écran seulement, mais plusieurs champs dans la table il y a beaucoup de champs. J'ai écrit la requête suivante:
Select p.GUID, p.myvalues, p.Fields
from myTable gz
unpivot([myvalues] for Fields in ([area], [davlplastmax])) p
Mais cette requête ne renvoie pas de valeurs NULL.
Aussi je veux obtenir des colonnes de INFORMATION_SCHEMA.COLUMNS
et passé les dans ([area], [davlplastmax])
.
Par exemple:
unpivot([values] for Fields in (
SELECT [MyDb].INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
FROM [MyDb].INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'MyTable'
)
Vous pouvez utiliser des instructions CASE ou UNPIVOT. –
UNPIVOT semble être la voie à suivre car certains ont déjà répondu. Question: pourquoi essayez-vous de rejoindre 'INFORMATION_SCHEMA.COLUMNS'? – Eli