遍历SQL表行和XML节点总数

时间:2018-08-08 20:17:08

标签: sql-server

我有一个名为“ students”的表,该表具有一个名为All_Marks的XML类型的列。每个条目都是All_Marks就是这种样式

<Marks>
  <Math>20</Math>
  <Science>30</Science>
</Marks>

学生中还有另一列称为Total_Marks。我想对每个学生的XML中的值求和,然后将该值插入该学生各自的Total_Marks列

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

UPDATE s1
SET Total_Marks = (SELECT SUM(xc.value('(.)[1]', 'int')) 
                   FROM dbo.Students s2
                   CROSS APPLY All_Marks.nodes('/Marks/*') AS XT(XC)
                   WHERE s2.StudID = s1.StudID)
FROM dbo.Students s1

对于dbo.Students中的每个学生,它计算All_Marks元素内<Marks> XML中存储的主题的数值之和,并更新列{{1} },并附上他/她的分数总和。