我正在练习一些SQL,我必须从数据库中检索有关员工的所有信息(sal + comm)> 1700.我知道这可以用一个简单的WHERE表达式完成,但我们正在练习CASE语句,所以我们需要这样做。
我已经知道常规CASE如何分配依赖于其他行值的新行值,但我不明白如何根据使用CASE表达式的条件选择行。
这是我迄今取得的成就:
SELECT
CASE
WHEN (sal+comm) > 1700 THEN empno
END AS empno
FROM emp;
我知道这是错的,但我被困在这里。任何帮助或任何搜索和阅读的资源将不胜感激,谢谢!
答案 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