我想使用case语句更新表,查询就像这样......
select case(@columnname) when 'name1' then
begin
update table
set
pay1=pay1* 100
pay2=pay2*20
pay3=pay3* 100
end
when 'name2' then
begin
update table
set
pay2=pay2*20
pay3=pay3* 100
end
when 'name3' then
begin
update table
set
pay3=pay3* 100
end
end
请告诉使用case语句
完成查询的正确逻辑答案 0 :(得分:3)
你必须交换语法。 case语句将应用于您要更新的每个值...
UPDATE table SET
pay1 = CASE WHEN @columnname IN('name1') THEN pay1 * 100 ELSE pay1 END,
pay2 = CASE WHEN @columnname IN('name1', 'name2') THEN pay2 * 20 ELSE pay2 END,
pay3 = CASE WHEN @columnname IN('name1', 'name2', 'name3') THEN pay3 * 100 ELSE pay3 END
看起来你真的想要的是一个if语句......
IF @columnname = 'name1'
UPDATE table SET pay1 = pay1 * 100, pay2=pay2*20, pay3=pay3* 100
ELSE IF @ColumnName = 'name2'
UPDATE table SET pay2 = pay2 * 20, pay3 = pay3 * 100
ELSE IF @ColumnName = 'name3'
UPDATE table SET pay3 = pay3 * 100
希望有所帮助
答案 1 :(得分:0)
使用此功能。
update table
set pay1 = CASE WHEN @columnname = 'name1'
THEN pay1* 100
ELSE pay1
set pay2 = CASE WHEN @columnname = 'name1'
OR @columnname = 'name2'
THEN pay2* 20
ELSE pay2
set pay3 = CASE WHEN @columnname = 'name1' OR
@columnname = 'name2' OR
@columnname = 'name3'
THEN pay3 * 100
ELSE pay3
答案 2 :(得分:0)
您可以使用以下内容:
UPDATE DBO.Test1
SET val1=
CASE name
WHEN 'name1' THEN val1*100
ELSE val1
END,
val2=
CASE name
WHEN 'name1' THEN val2*20
WHEN 'name2' THEN val2*20
ELSE val2
END,
val3=
CASE name
WHEN 'name1' THEN val3*100
WHEN 'name2' THEN val3*100
WHEN 'name3' THEN val3*100
ELSE val3
END;
我使用了不同的'When'子句来更新val3。您可以使用单个“WHEN”来更新val3,因为要更新的值在所有情况下都相同。
答案 3 :(得分:0)
注意:不要使用 SWITCH CASE ON 更新语句。
每次要更新时编写一个查询。如果您想自动化编写查询的过程,请使用 Excel 表来连接表达式并创建查询并运行它们。
切换案例最适用于 SELECT 语句。