Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql中when case的多列_Sql - Fatal编程技术网

sql中when case的多列

sql中when case的多列,sql,Sql,当我对工资栏使用=时,我发现语法错误 如果要向薪资中添加奖金并显示结果,请删除案例语句中的salary= SELECT ... CASE WHEN BONUS = 400 then SALARY = SALARY+400 END From Emp; 试试这个 SELECT ... CASE WHEN BONUS = 400 then SALARY+400 END as SALARY From Emp; 或 如果您想更新新的薪资,请使用 SELECT

当我对工资栏使用
=
时,我发现语法错误

如果要向薪资中添加奖金并显示结果,请删除案例语句中的
salary=

SELECT ...
    CASE
        WHEN BONUS = 400 then SALARY = SALARY+400
    END
From Emp;
试试这个

SELECT ...
    CASE WHEN BONUS = 400 then SALARY+400 END as SALARY 
From Emp;

如果您想更新新的薪资,请使用

SELECT 
CASE
    WHEN BONUS = '400' 
    then SALARY +400 
END
From Emp;

在select语句中,CASE表达式的工作方式与函数非常相似

在您的情况下,它将返回一个值,而不是两列

如果你需要:返回两列,CulnN1(奖金)和Calpn2(薪水)和薪水取决于奖金,你可以考虑这样的事情。

UPDATE Emp
SET SALARY = SALARY + CASE WHEN BONUS =400 THEN 400 ELSE 0  END;

您将有一个结果集,其中有两列“奖金”和“薪资”,其中薪资值取决于“奖金”列的值。

实际上,我的要求是使用“=”作为运算符。@chaitu。。方法用示例结果和表结构解释预期结果我的要求是当column1='xyz'然后column2='abc'@chaitu检查更新的代码实际上我的要求是使用“=”to运算符。@chaitu-这里的
=
运算符有什么用?这里我给出了一个小例子。我的要求是当column1='xyz'然后column2='abc'(这是我的要求)@chaitu-仍然不清楚。添加有问题的示例数据和预期结果。是否要在select查询的输出中显示薪资+400,还是要更新表中的记录?
UPDATE Emp
SET SALARY = SALARY + CASE WHEN BONUS =400 THEN 400 ELSE 0  END;
SELECT 
    -- Column1
    BONUS, -- Column BONUS from Emp table
    -- Column2
    CASE 
       WHEN BONUS = 400 THEN SALARY+400
       ELSE SALARY
    END AS SALARY -- 'SALARY' alias is assigned to the resultant value of the CASE (to make this a named Column)
FROM Emp