簡體   English   中英

在SQL中創建帶有子屬性的XML

[英]Xml creation with subattribute in sql

我有這樣的查詢:

 SELECT  
    getdate()[createdon], 'www.google.com'[XMLNS],
    Co.Country, IC.InterConnectionName as point,
    SO.SOName[TSO], FD.GasDay, FD.CaptureDate,
    CD.mwhentry AS entrymwh, CD.mwhexit AS exitmwh, 
    DS.State, (CD.MWHENTRY - CD.MWHEXIT) AS NETMWH,
    (cd.mwhexit - cd.mwhexit) as NETMCH 
FROM 
    TABLENAME 

我希望將其轉換為xml

<gas-flow created-on="2012/06/02T10:30:01Z"
          xmlns="www.google.com">
   <country>Austria</country>
   <point>TSO4</point>
   <tso>BOG</tso>
   <gas-day>2012/06/02</gas-day>
   <capture-date>2012/06/02T10:30:00Z</capture-date>
   <state version="1">provisional</state>  
   <entry mwh="558234" mcm="52.80"/>
   <exit mwh="0" mcm="0"/>
   <net mwh="558234" mcm="52.80"/>
</gas-flow>

如果我這樣做

FOR XML RAW ('gasflow'), ROOT ('FLOWDATAID'), ELEMENTS

我也獲得了標簽之間的數據,但問題是

 entry tag, exit tag and net mwh 

必須像這樣

謝謝您的幫助..

您需要檢查FOR XML PATH()語法 -它比FOR XML RAW靈活得多,並且允許您執行諸如將某些輸出指定為屬性(而不是元素)之類的操作。

所以嘗試這樣的事情:

;WITH XMLNAMESPACES (DEFAULT 'www.google.com')
SELECT  
    GETDATE() AS '@created-on', 
    CO.Country, 
    IC.InterConnectionName AS 'point',
    SO.SOName AS TSO, 
    FD.GasDay, 
    FD.CaptureDate,
    '1' AS 'State/@version',
    [DS.State], 
    CD.mwhentry AS 'entry/@mwh',
    CD.mcmEntry AS 'entry/@mcm',
    CD.mwhexit AS 'exit/@mwh',
    CD.mcmexit AS 'exit/@mcm',
    (CD.MWHENTRY - CD.MWHEXIT) AS 'net/@mwh',
    (CD.MWHexit - CD.MWHexit) AS 'net/@mcm'
FROM 
    dbo.YourTableNameHere
FOR XML PATH('gas-flow'), ROOT ('FLOWDATAID')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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