Sql server SQL XML-2组独立数据-按&;行数

Sql server SQL XML-2组独立数据-按&;行数,sql-server,xml,tsql,for-xml,sql-order-by,Sql Server,Xml,Tsql,For Xml,Sql Order By,我将从同一个主表(dbo.Submission)提取的两组XML数据连接在一起 dbo中有一个DATETIME字段。提交名为[Addedtt],我根据两组不同的标准选择数据,但是我希望按照[Addedtt]的顺序格式化返回的数据,因为此XML提交必须按时间顺序进行 下面是我的SELECT语句,我在每个查询中都保留了ORDER BY,但这只是按照[AddedDt]顺序对相关查询进行排序。我需要添加一个额外的节点,该节点的行数是我在原始数据中使用的 ROW_NUMBER() OVER ( ORDER

我将从同一个主表(dbo.Submission)提取的两组XML数据连接在一起

dbo中有一个DATETIME字段。提交名为[Addedtt],我根据两组不同的标准选择数据,但是我希望按照[Addedtt]的顺序格式化返回的数据,因为此XML提交必须按时间顺序进行

下面是我的SELECT语句,我在每个查询中都保留了ORDER BY,但这只是按照[AddedDt]顺序对相关查询进行排序。我需要添加一个额外的节点,该节点的行数是我在原始数据中使用的

ROW_NUMBER() OVER ( ORDER BY ( SELECT   sub.AddedDt
                                 ) ) AS "PolicyRecordNumber" ,
但是,这必须出现在每个策略的“Policy”元素下并按顺序运行,我如何才能实现这一点


您可以首先在CTE中添加运行记录编号。你发布了很多不必要的代码。下次请尝试将代码减少到所需的行数。。。而是添加一个表声明和示例数据来完成MCVE

这是你的场景模型

DECLARE @YourTbl TABLE(ID INT IDENTITY, AddedDt DATETIME,GroupingValue VARCHAR(100),SomeValue VARCHAR(100));

INSERT INTO @YourTbl VALUES
 ({ts'2016-01-01 00:00:00'},'A','Value A1')
,({ts'2016-01-02 00:00:00'},'B','Value B1')
,({ts'2016-01-03 00:00:00'},'A','Value A2')
,({ts'2016-01-04 00:00:00'},'A','Value A3')
,({ts'2016-01-05 00:00:00'},'B','Value B3')
,({ts'2016-01-06 00:00:00'},'B','Value B3')
,({ts'2016-01-07 00:00:00'},'A','Value A4');
--这是CTE,它将数字相加

WITH NumberedCTE AS
(
    SELECT ROW_NUMBER() OVER(ORDER BY AddedDt) AS PolicyRecordNumber
          ,*
    FROM @YourTbl 
)
--这就是分组XML创建

SELECT t1.GroupingValue AS [@ID]
      ,(
        SELECT AddedDt AS [@dt]
              ,SomeValue AS [@val]
              ,PolicyRecordNumber AS [@rn]
        FROM NumberedCTE AS t2
        WHERE t1.GroupingValue=t2.GroupingValue
        ORDER BY PolicyRecordNumber
        FOR XML PATH('Detail'),TYPE
       )
FROM NumberedCTE AS t1
GROUP BY t1.GroupingValue
FOR XML PATH('Group'),ROOT('root')
--结果在内部排序,并获得原始记录编号

<root>
  <Group ID="A">
    <Detail dt="2016-01-01T00:00:00" val="Value A1" rn="1" />
    <Detail dt="2016-01-03T00:00:00" val="Value A2" rn="3" />
    <Detail dt="2016-01-04T00:00:00" val="Value A3" rn="4" />
    <Detail dt="2016-01-07T00:00:00" val="Value A4" rn="7" />
  </Group>
  <Group ID="B">
    <Detail dt="2016-01-02T00:00:00" val="Value B1" rn="2" />
    <Detail dt="2016-01-05T00:00:00" val="Value B3" rn="5" />
    <Detail dt="2016-01-06T00:00:00" val="Value B3" rn="6" />
  </Group>
</root>

嗨!这个问题解决了吗?你需要进一步的帮助吗?请允许我一个提示:如果这个问题得到解决,您将非常感谢,在(最佳)答案的投票柜台下方勾选接受检查。这将1)将此问题标记为已解决2)使追随者更容易找到最佳解决方案3)向回答者支付积分,4)向您支付积分。因为你自己已经越过了15点的边界,你被要求对捐款进行投票。这就是说谢谢的方式。快乐编码!
<root>
  <Group ID="A">
    <Detail dt="2016-01-01T00:00:00" val="Value A1" rn="1" />
    <Detail dt="2016-01-03T00:00:00" val="Value A2" rn="3" />
    <Detail dt="2016-01-04T00:00:00" val="Value A3" rn="4" />
    <Detail dt="2016-01-07T00:00:00" val="Value A4" rn="7" />
  </Group>
  <Group ID="B">
    <Detail dt="2016-01-02T00:00:00" val="Value B1" rn="2" />
    <Detail dt="2016-01-05T00:00:00" val="Value B3" rn="5" />
    <Detail dt="2016-01-06T00:00:00" val="Value B3" rn="6" />
  </Group>
</root>