Автор: Алексей Дружинин
Отнюдь не всем и не часто, но может пригодиться. Если нужно представить одну строку (например, из какой-нибудь настроечной таблицы) в виде набора строк "имя поля - значение", то можно, в частности, поступить вот так.
При добавлении/удалении полей из таблицы такой скрипт переписывать (в отличие от скрипта с использованием штатного unpivot-а) не придётся (тут есть и плюсы, и минусы, поэтому просто назову это особенностью :))
; with CTE_SingleRowXML as ( select x = (select * from dbo.[ВашаТаблица] for xml path(''), elements xsinil, type) ) select ColName = v.value('local-name(.)', 'sysname') , Value = v.value('text()[1]', 'nvarchar(max)') from CTE_SingleRowXML as srx cross apply srx.x.nodes('*') as f(v);
При добавлении/удалении полей из таблицы такой скрипт переписывать (в отличие от скрипта с использованием штатного unpivot-а) не придётся (тут есть и плюсы, и минусы, поэтому просто назову это особенностью :))
Комментарии