Időnként szükség lehet oszlopkat sorokra konvertálni. Persze, jó az unpivot, de ha nincs semmi speciálisra szükségünk, csak egyszerű key-value párokra, akkor van egy sokkal univerzálisabb megoldás: xml oda vissza konvertálás.
Lássuk mire gondolok.
select [name], [state_desc], [user_access_desc], [page_verify_option_desc], [log_reuse_wait_desc] from sys.[databases] where [database_id] = 1
És akkor az univerzális query amiben csak a lekérdezésnek kell módosuljon:
declare @xml_data xml = ( select [name], [state_desc], [user_access_desc], [page_verify_option_desc], [log_reuse_wait_desc] from sys.[databases] where [database_id] = 1 for xml path ) select t.c.value('local-name(.)', 'nvarchar(255)') as [Key], t.c.value('(.)[1]', 'nvarchar(255)') as [Value] from @xml_data.nodes('//row/*') t(c)
Ennyire egyszerű 🙂
Hozzászólás