在我的SQL XMLpath上,将多个子级放置在读数父级中,但是非父级的datedate,recordcount,cotk,validationid级别以及多次创建的 reading 父级只有一次出现一次。这是由于子查询中的join accountnum具有需要连接到主查询的不同值而需要进行的连接,并且具有b.accountum分组,以便在'readings '父项下显示阅读子级值。 。如何解决呢?请参阅下面的我的SQL语法。在下面查看输出结果和我想要的预期结果。
SELECT
b.[reportdate]
,b.[recordcount]
,b.[cotk]
,ISNULL(b.[validationid],'')as 'validationid' -- main query
,( SELECT --subquery
a.[trueupprodutionind] as [@trueupprodutionind]
,a.[estimatedproductionind] as [@estimatedproductionind]
,a.[productionperiodenddate] as [@productionperiodenddate]
,a.[productionperiodstartdate] as [@productionperiodstartdate]
,a.[cumulativereading] as [@cumulativereading]
, a.[accountnum] as [@accountnum]
FROM [abc].[dbo].[stgL] a
Where a.accountnum =b.accountnum
FOR XML PATH ('reading'), ROOT('readings'),TYPE
) --as [readings]
FROM [abc].[dbo].[stL] b
WHERE b.Accountnum in ('KW0019672','KW0016907','TG0033707','EP0052497','KW0039089','KW0016219','ELP0071812','KW0020767')
group by b.[accountnum],b.[reportdate],b.[recordcount],b.[cotk],b.[validationid]
FOR XML PATH (''), TYPE ,ROOT('pbs') -xmlpath
以上是我创建以形成XML的SQL语法
下面是我所希望的XMl结果所能提供的内容
<pbs>
<reportdate>2018-08-06 12:45:26.893</reportdate>
<recordcount>34065</recordcount>
<cotk>892543</cotk>
<validationid />
<readings>
<reading accountnum="KW0019672" cumulativereading="42493.0977" productionperiodstartdate="2013-07-03" productionperiodenddate="2018-07-31" estimatedproductionind="0" trueupprodutionind="1" />
<reading accountnum="KW0016907" cumulativereading="63309.1390" productionperiodstartdate="2013-02-22" productionperiodenddate="2018-07-31" estimatedproductionind="1" trueupprodutionind="0" />
<reading accountnum="TG0033707" cumulativereading="33430.1130" productionperiodstartdate="2014-11-13" productionperiodenddate="2018-07-31" estimatedproductionind="0" trueupprodutionind="1" />
</readings>
</pbs>