1

私はこのようなクエリを持っています:

 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 

このようにする必要があります

助けてくれてありがとう..

4

1 に答える 1

0

構文を確認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')
于 2012-11-26T06:26:31.393 に答える