微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SQL中从XML提取数据总和

如何解决在SQL中从XML提取数据总和

这不是最“优雅”的路线,我敢肯定还有更直接的路线,但是您可以尝试一下

Select
    B.Name,
    SUM(B.TotalCode)
FROM 
(
    SELECT 
       T1.c.value('Name[1]', 'VARCHAR(100)') AS Name,
       T1.c.value('Code[1]', 'NUMERIC(10,5)') AS TotalCode
    FROM TableName
    CROSS APPLY xmlField.nodes('Root') AS T1(c)
) AS B
GROUP BY Name

基本上,这首先是将数据从XML字段项中提取出来,然后按名称分组并给出总和。就像我说的那样,不是很优雅,但是很有效!

解决方法

我在SQL表中有一个XML字段,像这样

<Root>
 <Name>Apollo</Name>
 <Code>1000</Code>
 <Code>2000</Code>
 <Code>3000</Code>
</Root>

我需要编写一个SQL查询来选择“名称”和“代码”值的总和

SELECT 
 T1.c.value('Name[1] AS VARCHAR(100)') AS Name,T1.c.value('Code[1] AS NUMERIC(10,5)') AS TotalCode
FROM TableName
CROSS APPLY xmlField.nodes('Root') AS T1(c)

它给我这样的输出:

Name                Code
---------------------------
Apollo              1000
Apollo              2000
Apollo              3000

但是我需要像这样的所有Code标签的值的总和:

Name                Code
---------------------------
Apollo              6000

有什么想法如何获得标签值的总和?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。