[英]Output table to Xml: Show attribute value based on the a specific column value
我正在嘗試將表格輸出為Xml。 我希望根節點名稱為“ New”,並且表中的每一行都以<member>
呈現。
<new>
<member source="STORE">
<externalId>111</externalId>
<eclubNo>123456</eclubNo>
<ssn>195812272796</ssn>
<firstName>Loke</firstName >
<lastName>Sjögren</lastName>
<email>yyy@xxx.se</email>
</member>
<member source="WEB">
<externalId>222</externalId>
<eclubNo>764746</eclubNo>
<ssn>222</ssn>
<firstName>Loke</firstName >
<lastName>Sjögren</lastName>
<email>blahblahblah@yahoo.com</email>
</member>
</new>
如您所見,每個<member>
都有一個名為source的屬性。 source的值取決於表中可以包含源值的同名列(如果值是“ StoreEntry”,則它變為“ STORE”,如果“ WebEntry”,則變為“ WEB”,如上面的片段所示) )。 如何使用For Xml
語句獲取此Xml?
您可以這樣嘗試:
這是一個工作示例。 下次,請自己准備一下( 如何創建MCVE ):
DECLARE @tbl TABLE(source VARCHAR(100),externalId INT,eclubNo INT,ssn BIGINT,firstName VARCHAR(100),lastName VARCHAR(100),email VARCHAR(100));
INSERT INTO @tbl VALUES
('StoreEntry',111,123456,13213213123,'Loke','Sjörgen','yyy@xxx.se')
,('WebEntry',222,34234,443,'Other','Name','email@yyy.se');
-查詢
SELECT CASE WHEN [source]='StoreEntry' THEN 'STORE' ELSE 'WEB' END AS [@source]
,externalId
,eclubNo
,ssn
,firstName
,lastName
,email
FROM @tbl AS YourTable
FOR XML PATH('member'),ROOT('new');
結果
<new>
<member source="STORE">
<externalId>111</externalId>
<eclubNo>123456</eclubNo>
<ssn>13213213123</ssn>
<firstName>Loke</firstName>
<lastName>Sjörgen</lastName>
<email>yyy@xxx.se</email>
</member>
<member source="WEB">
<externalId>222</externalId>
<eclubNo>34234</eclubNo>
<ssn>443</ssn>
<firstName>Other</firstName>
<lastName>Name</lastName>
<email>email@yyy.se</email>
</member>
</new>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.