SQL查询语法的澄清:我们有一个Employee
表,其中有两列Emp Id
和EmpName
,其值如下所示:
100, a
200, b
300, c
我必须将EmpName
的“ Joe”更新为100,将“ John”的更新为200,将“ Sam”的更新为<?xml version="1.0" encoding="utf-8"?>
<ex:Record xmlns:ex="http://archertech.com/Print/Export">
<ex:Item>
<ex:Questionnaire_ID>1007</ex:Questionnaire_ID>
<ex:Target>
<ex:Item>Company 1</ex:Item>
</ex:Target>
<ex:Document_to_be_Requested>
<ex:Item>A</ex:Item>
<ex:Item>C</ex:Item>
<ex:Item>D</ex:Item>
<ex:Item>F</ex:Item>
</ex:Document_to_be_Requested>
</ex:Item>
<ex:Item>
<ex:Questionnaire_ID>1009</ex:Questionnaire_ID>
<ex:Target>
<ex:Item>Company 2</ex:Item>
</ex:Target>
<ex:Document_to_be_Requested>
<ex:Item>A</ex:Item>
<ex:Item>B</ex:Item>
<ex:Item>F</ex:Item>
<ex:Item>G</ex:Item>
</ex:Document_to_be_Requested>
</ex:Item>
</ex:Record>
。然后,对于表的其余部分,需要重复使用这三个相同的名称。
如何按升序选择EmpId并相应地更新EmpName?
答案 0 :(得分:3)
WITH cteRowNums AS (
SELECT EmpId,
EmpName,
ROW_NUMBER() OVER(ORDER BY EmpId) AS RowNum
FROM Employee
)
UPDATE cteRowNums
SET EmpName = CASE WHEN RowNum % 3 = 1 THEN 'Joe'
WHEN RowNum % 3 = 2 THEN 'John'
WHEN RowNum % 3 = 0 THEN 'Sam'
END;
答案 1 :(得分:0)
您好,请添加row_num列 之后使用ROW_NUMBER()更新 像
Alter table emp1 add row_num varchar(10)
with cte as (
select id,name,row_num,ROW_NUMBER() over (order by [id]) as rn
from emp1
)
update cte set row_num = 'Test'+ convert(varchar,rn)
row_number这将创建一个与[Emp Id]有关的有序列。 并运行update语句以获得所需的结果。