[英]Return SQL Query with XML as a single flattened row
SQL Server 2008R2或2012
是否可以將XML節點查詢作為單行而不是多行返回,其中每個返回項都是新列而不是一行?
例如,XML字段包含以下XML結構:
<MetaFieldData>
<MetaField>
<Name>Volume</Name>
<Value>Large</Value>
</MetaField>
<MetaField>
<Name>Code</Name>
<Value>3DP</Value>
</MetaField>
<MetaField>
<Name>Photo</Name>
<Value>foo.png</Value>
</MetaField>
<MetaField>
<Name>CommonName</Name>
<Value>Foo Bar</Value>
</MetaField>
</MetaFieldData>
使用以下SQL:
select
m.value('Name[1]', 'varchar(100)') as Name,
m.value('Value[1]', 'varchar(max)') as Value
from MyTable
cross apply MetaFieldData.nodes('/MetaFieldData/MetaField') as Meta(m)
where Id = 1
結果集將返回:
Name Value
--------------------
Volume Large
Code 3DP
Photo foo.png
CommonName Foo Bar
您如何將結果集返回為:
Volume Code Photo CommonName
----------------------------------------------
Large 3DP foo.png Foo Bar
嘗試這個
SELECT Volume,Code,Photo,CommonName
FROM
(
SELECT
m.value('Name[1]', 'varchar(100)') as Name,
m.value('Value[1]', 'varchar(max)') as Value
FROM MyTable
CROSS APPLY MetaFieldData.nodes('/MetaFieldData/MetaField') as Meta(m)
WHERE Id = 1
) P
PIVOT
(
MAX(Value) FOR Name IN (Volume,Code,Photo,CommonName)
) pvt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.