2014-05-12 48 views
0

早上,如何格式化来自SQL查询的XML结果

我想从SQL查询中格式化一些XML输出,并且很挣扎。我目前拥有的SQL是类似这样的事情,我已经改变了表和列的名称:

SELECT * 
FROM ReportTable p with (nolock) 
    LEFT OUTER JOIN Table1 s with (nolock) on s.UID = p.UID 
    LEFT OUTER JOIN Table2 o with (nolock) on o.UID = p.UID 
    LEFT OUTER JOIN Table3 ct with (nolock) on ct.UID = p.UID 
WHERE p.UID = 1194 
FOR XML AUTO, ELEMENTS 

,这是给我下面的输出:

<p> 
    <UID>1194</UID> 
    <pCol1>Value</pCol1> 
    <pCol2>Value</pCol2> 
    <pCol3>Value</pCol4> 
    <pCol4>Value</pCol4> 
    <s> 
    <UID>1194</UID> 
    <sCol1>Value</sCol1> 
    <sCol2>Value</sCol2> 
    <sCol3>Value</sCol3> 
    <o> 
     <ct> 
      <UID>1194</UID> 
      <ctCol1>Value</ctCol1> 
      <ctCol2>Value</ctCol2> 
     </ct> 
    </o> 
    </s> 
</p> 

这是不是什么我之后,我真正需要的是这样的:

<p> 
    <UID>1194</UID> 
    <pCol1>Value</pCol1> 
    <pCol2>Value</pCol2> 
    <pCol3>Value</pCol4> 
    <pCol4>Value</pCol4> 
    <s> 
     <UID>1194</UID> 
     <sCol1>Value</sCol1> 
     <sCol2>Value</sCol2> 
     <sCol3>Value</sCol3> 
    </s> 
    <o> 
    </o> 
    <ct> 
     <UID>1194</UID> 
     <ctCol1>Value</ctCol1> 
     <ctCol2>1</ctCol2> 
    </ct> 
</p> 

难道只是我必须改变我的SQL所以它使用的子查询,或者有我错过了什么令人讶异明显与我的SQL的情况下?

理想情况下,该解决方案还需要适用于从2000年开始的SQL Server版本。

谢谢。

回答