Sql server 2008 在SQL中将表数据转换为XML时,没有显示多行
我有两张表,如下所示Sql server 2008 在SQL中将表数据转换为XML时,没有显示多行,sql-server-2008,sql-server-2005,sql-server-2008-r2,sql-server-2012,Sql Server 2008,Sql Server 2005,Sql Server 2008 R2,Sql Server 2012,我有两张表,如下所示 OrderHeader: PKOrderHeader CustomerCode DocumentRef SiteCode 1 JOE TEST1 TH 2 POL TEST2 CO 3 GEO TEST3 KH OrderDetails: FKOrderHeader ProductCode RotationLineNo 1
OrderHeader
:
PKOrderHeader CustomerCode DocumentRef SiteCode
1 JOE TEST1 TH
2 POL TEST2 CO
3 GEO TEST3 KH
OrderDetails
:
FKOrderHeader ProductCode RotationLineNo
1 PRD1 1
1 PRD2 2
2 PRD3 2
3 PRD4 3
在将表数据转换为XML字符串后,我需要获得如下所示的XML字符串
<ORDERS>
<SO>
<HD>
<PKOrderHeader>1</PKOrderHeader>
<CustomerCode>JOE</CustomerCode>
</HD>
<HO>
<DocumentRef>TEST1</DocumentRef>
<SiteCode>TH</SiteCode>
</HO>
<LO>
<FKOrderHeader>1</FKOrderHeader>
<ProductCode>PRD1</ProductCode>
<RotationLineNo>1</RotationLineNo>
</LO>
<LO>
<FKOrderHeader>1</FKOrderHeader>
<ProductCode>PRD2</ProductCode>
<RotationLineNo>2</RotationLineNo>
</LO>
</SO>
<SO>
<HD>
<PKOrderHeader>2</PKOrderHeader>
<CustomerCode>POL</CustomerCode>
</HD>
<HO>
<DocumentRef>TEST2</DocumentRef>
<SiteCode>CO</SiteCode>
</HO>
<LO>
<FKOrderHeader>2</FKOrderHeader>
<ProductCode>PRD2</ProductCode>
<RotationLineNo>2</RotationLineNo>
</LO>
</SO>
<SO>
<HD>
<PKOrderHeader>3</PKOrderHeader>
<CustomerCode>GOE</CustomerCode>
</HD>
<HO>
<DocumentRef>TEST3</DocumentRef>
<SiteCode>KH</SiteCode>
</HO>
<LO>
<FKOrderHeader>3</FKOrderHeader>
<ProductCode>PRD3</ProductCode>
<RotationLineNo>3</RotationLineNo>
</LO>
</SO>
</ORDERS>
但是,当我生成XML字符串时,我只得到如下所示的XML字符串形式的单行数据。此外,LO部分也没有显示多行
<ORDERS>
<SO>
<HD>
<PKOrderHeader>1</PKOrderHeader>
<CustomerCode>JOE</CustomerCode>
</HD>
<HO>
<DocumentRef>TEST1</DocumentRef>
<SiteCode>TH</SiteCode>
</HO>
<LO>
<FKOrderHeader>1</FKOrderHeader>
<ProductCode>PRD1</ProductCode>
<RotationLineNo>1</RotationLineNo>
</LO>
</SO>
</ORDERS>
1.
乔
测试1
真实航向
1.
PRD1
1.
那么,有谁能帮助我将多行数据作为XML字符串获取吗?您可以使用以下查询实现所需的功能:
select
(select PKOrderHeader, CustomerCode for xml path('HD'), type),
(select DocumentRef, SiteCode for xml path('HO'), type),
(
select FKOrderHeader, ProductCode, RotationLineNo
from #OrderDetails od
where od.FKOrderHeader = oh.PKOrderHeader
for xml path('LO'), type
)
from #OrderHeader oh
for xml path('SO'), root('ORDERS')
谢谢你,好像很痛苦
select
(select PKOrderHeader, CustomerCode for xml path('HD'), type),
(select DocumentRef, SiteCode for xml path('HO'), type),
(
select FKOrderHeader, ProductCode, RotationLineNo
from #OrderDetails od
where od.FKOrderHeader = oh.PKOrderHeader
for xml path('LO'), type
)
from #OrderHeader oh
for xml path('SO'), root('ORDERS')