SQL使用CASE表达式有条件地选择行

时间:2016-03-01 18:16:18

标签: sql oracle case

我正在练习一些SQL,我必须从数据库中检索有关员工的所有信息(sal + comm)> 1700.我知道这可以用一个简单的WHERE表达式完成,但我们正在练习CASE语句,所以我们需要这样做。

我已经知道常规CASE如何分配依赖于其他行值的新行值,但我不明白如何根据使用CASE表达式的条件选择行。

这是我迄今取得的成就:

SELECT
    CASE
        WHEN (sal+comm) > 1700 THEN empno
    END AS empno
FROM emp;

我知道这是错的,但我被困在这里。任何帮助或任何搜索和阅读的资源将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:4)

SELECT *
FROM emp
WHERE (CASE WHEN (sal+comm) > 1700 THEN 1
            ELSE 0
       END) = 1

答案 1 :(得分:2)

CASE语句将生成结果,您可以对其进行比较或在其他操作中使用它。

在这种情况下,薪水取决于emp.job

SELECT *
FROM emp
WHERE CASE WHEN emp.job = 'DEVELOPER' THEN salary*1.5
           WHEN emp.job = 'DB' THEN salary*2
      END > 1700

解决你的情况有点过分,但我想你可以包括其他案例。

SELECT *
FROM emp
WHERE CASE WHEN sal+comm > 1700 THEN 1
           ELSE 0
      END > 0

答案 2 :(得分:-4)

你想要一个WHERE子句。

IllegalClassFormatException