2017-02-01 48 views
0

我想輸出一個表格作爲Xml。我想將根節點名稱設置爲「新建」,並將表格中的每一行顯示爲​​。輸出表到Xml:顯示基於特定列值的屬性值

<new> 
    <member source="STORE"> 
       <externalId>111</externalId> 
       <eclubNo>123456</eclubNo> 
       <ssn>195812272796</ssn> 
       <firstName>Loke</firstName > 
       <lastName>Sjögren</lastName> 
       <email>[email protected]</email> 
     </member> 
     <member source="WEB"> 
       <externalId>222</externalId> 
       <eclubNo>764746</eclubNo> 
       <ssn>222</ssn> 
       <firstName>Loke</firstName > 
       <lastName>Sjögren</lastName> 
       <email>[email protected]</email> 
     </member> 
</new> 

正如你所看到的,每個​​有一個叫做的屬性。源的值取決於表中可以包含源值的同名列(如果值爲「StoreEntry」,則它變爲「STORE」,如果「WebEntry」變爲「WEB」,如上面片段中所示)。如何使用For Xml聲明獲得此Xml?

回答

2

你可以這樣嘗試一下:

下面是一個工作示例。接下來的時間請這個準備自己(How to create a 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','[email protected]') 
,('WebEntry',222,34234,443,'Other','Name','[email protected]'); 

--The查詢

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>[email protected]</email> 
    </member> 
    <member source="WEB"> 
    <externalId>222</externalId> 
    <eclubNo>34234</eclubNo> 
    <ssn>443</ssn> 
    <firstName>Other</firstName> 
    <lastName>Name</lastName> 
    <email>[email protected]</email> 
    </member> 
</new> 
+0

謝謝!現在工作。 – Disasterkid