给出以下样本表结构:
Table Customer:
CustomerID varchar(50),
CustomerName varchar(50)
Sample Data:
Customer ID CustomerName
ABC123 Joe Sample
Table Phone:
CustomerID varchar(50),
PhoneNumber varchar(50),
PhoneType varchar(50)
Sample Data:
CustomerID PhoneNumber PhoneType
ABC123 602-100-2000 Home
ACB123 602-200-1234 Cell
如何使用TSQL创建以下XML
<Customer>
<CustomerID>ABC123</CustomerID>
<CustomerName>Joe Sample</CustomerName>
<Phones>
<Phone>
<PhoneNumber>602-100-2000</PhoneNumber>
<PhoneType>Home</PhoneType>
</Phone>
<Phone>
<PhoneNumber>602-200-1234</PhoneNumber>
<PhoneType>Cell</PhoneType>
</Phone>
</Phones>
</Customer>
这是我正在使用的数据集和结构的一个极其简化的示例,但我尝试过的大多数方法似乎都没有正确地创建重复节点。当我在输出之前加入表时,他们倾向于创建客户记录的多个实例。
感谢您的时间。
答案 0 :(得分:0)
花了一些时间之后,似乎可以通过嵌套一系列XML PATH语句来指定结构:
SELECT CustomerID AS 'CustomerID' ,
CustomerName AS 'CustomerName' ,
( SELECT ( SELECT PhoneNumber AS 'PhoneNumber' ,
PhoneType AS 'PhoneType'
FROM Phone
WHERE Phone.CustomerID = Customer.CustomerID
FOR
XML PATH('Phone') ,
TYPE
)
FOR
XML PATH('Phones') ,
TYPE
)
FROM Customer
FOR XML PATH('Customer') ,
TYPETYPE