我有一个简单的查询,该查询采用XML字符串并根据在UI上选择的内容插入一行或多行数据。
记录上有一个确定其顺序的字段,默认情况下,这些新字段将添加到表的末尾。
如果3条记录分别与ROUND
的{{1}}存在,而我又通过XML字符串添加了3条记录,则这些记录应以OrderID
作为其1,2,3
。新集合中的哪个3个值获得哪个顺序无关紧要,只要它们继续递增即可。
这是我的尝试,如果有一个项目,但是有多个项目,4,5,6
总是相同的,因此计数对orderID
无效。
@newOrder
有什么想法吗?
答案 0 :(得分:0)
您可以使用ROW_NUMBER
来生成新值:
INSERT INTO c.department (dID,DepartmentID,DepartmentOrder)
SELECT @dID,
ParamValues.x1.value('departmentID[1]', 'int'),
ISNULL(@newOrder,0)+ROW_NUMBER() OVER (ORDER BY ParamValues.x1)
FROM @departments.nodes('/departments/department') AS ParamValues(x1)
通过使用x1
子句中的XML列ORDER BY
,您可以指定DepartmentOrder应该按节点在xml中出现的方式进行排序。