日期:2014-05-17  浏览次数:20738 次

把select 结果集转换为xml 格式的
OrderNumber ItemNumber Qty Rate QtyPicked
00001 A001 10 11.25 0
00001 A002 20 15.00 0
00001 A003 30 23.75 0

转换后的结果是下面的
用 for xml path  和auto 都搞不定。。。

<orderInfo>
  <itemInfo>
    <OrderNumber>00001</OrderNumber>
    <ItemNumber>A001</ItemNumber>
    <Qty>10</Qty>
  </itemInfo>
  <itemInfo>
    <OrderNumber>00001</OrderNumber>
    <ItemNumber>A002</ItemNumber>
    <Qty>20</Qty>
  </itemInfo>
  <itemInfo>
    <OrderNumber>00001</OrderNumber>
    <ItemNumber>A003</ItemNumber>
    <Qty>30</Qty>
  </itemInfo>
</orderInfo>
------最佳解决方案--------------------
--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([OrderNumber] VARCHAR(5),[ItemNumber] VARCHAR(4),[Qty] INT,[Rate] NUMERIC(4,2),[QtyPicked] INT)
INSERT #tb
SELECT '00001','A001',10,11.25,0 UNION ALL
SELECT '00001','A002',20,15.00,0 UNION ALL
SELECT '00001','A003',30,23.75,0
GO

--> 测试语句:

SELECT
OrderNumber,
ItemNumber,
Qty
FROM #tb itemInfo 
FOR XML AUTO, TYPE, ELEMENTS, ROOT('orderInfo')