XMLpath将多个具有相同父级但非父级的子级放置多次

时间:2018-08-14 15:48:33

标签: for-xml-path

在我的SQL XMLpath上,将多个子级放置在读数父级中,但是非父级的datedate,recordcount,cotk,validationid级别以及多次创建的 reading 父级只有一次出现一次。这是由于子查询中的join accountnum具有需要连接到主查询的不同值而需要进行的连接,并且具有b.accountum分组,以便在'readings '父项下显示阅读子级值。 。如何解决呢?请参阅下面的我的SQL语法。在下面查看输出结果和我想要的预期结果。

xmlpath

    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>

0 个答案:

没有答案