我在 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
但我需要所有代码标签的值的总和,如下所示:
Name Code
---------------------------
Apollo 6000
有什么想法如何获取标签值的总和吗?
这不是最“优雅”的,我确信有更直接的路线,但你可以尝试这个
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 字段项中提取数据,然后按名称分组并给出总和。就像我说的,不优雅但有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)