以下是獲取所需結果的方法。
declare @T table(id int, name varchar(20))
insert into @T values(321, 'Book')
insert into @T values(654, 'Pen')
select (
select 'id' as '@name',
T.id as '@value'
for xml path('column'), type
),
(
select 'name' as '@name',
T.name as '@value'
for xml path('column'), type
)
from @T as T
for xml path('row'), root('root')
如果你想這對使用select *
你可以用這個代替任何工作表中。 只需將@T
替換爲您的表名即可。注意:這隻有在列名是有效的XML元素名稱時纔有效。
select
(
select T3.N.value('local-name(.)', 'sysname') as '@name',
T3.N.value('.', 'nvarchar(max)') as '@value'
from (
select T1.*
for xml path(''), type
) T2(N)
cross apply T2.N.nodes('*') as T3(N)
for xml path('column'), root('row'), type
)
from @T as T1
for xml path(''), root('root')
請問您能指點幾個例子嗎? – Cherven 2012-03-07 16:53:40
這是一個相當大的話題!您可以從http://msdn.microsoft.com/en-us/library/ms171950.aspx開始 – 2012-03-07 17:04:14
看起來像SQL服務器沒有XmlTransform函數,我不能在這裏使用CLR。 – Cherven 2012-03-07 17:17:20