Je veux transformer l'logging d'une requête SQL qui ressemble à ceci …
FirstName Amount PostalCode LastName AccountNumber John 2.4 ZH1E4A Fork 857685
à une paire de valeur key qui ressemble à ceci …
Key Value FirstName John Amount 2.4 PostalCode ZH1E4A LastName Fork AccountNumber 857685
Et je veux tout faire dans SQL. J'ai regardé l'exemple de pivot, mais je ne suis pas sûr que cela fonctionnera pour cela. Je sais que je pourrais utiliser des tables temporaires, union mais j'espère une solution plus élégante. Quelqu'un a une suggestion?
Merci, Paul
Essaye ça:
DECLARE @t table(FirstName varchar(10), Amount money, PostalCode varchar(10), LastName varchar(10), AccountNumber int) INSERT @t values('John', 2.4, 'ZH1E4A', 'Fork', 857685) ;WITH CTE AS ( SELECT [FirstName], cast([Amount] as varchar(10)) [Amount], [PostalCode], [LastName], cast([AccountNumber] as varchar(10)) [AccountNumber] FROM @t ) SELECT [Key],Value FROM CTE UNPIVOT (Value FOR [Key] IN ([FirstName], [Amount], [PostalCode], [LastName], [AccountNumber]) ) AS unpvt
Résultat:
Key Value FirstName John Amount 2.40 PostalCode ZH1E4A LastName Fork AccountNumber 857685