簡體   English   中英

輸出到Xml的表:顯示基於特定列值的屬性值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM