case when 有兩種用法結構
-
第一種 標准的(建議用第一種 標准並且不容易出錯 可判斷任意條件)
case when 判斷的字段名條件1 then 結果1 when 判斷的字段名 條件2 then 結果2 else(可寫可不寫) 結果3 end '命名的名字'
例如
select *, -- 查詢所有數據 case when sal>1000 and sal <1500 then '底薪' -- 判斷條件 when sal>1500 and sal<2000 then '高薪' -- 判斷條件 end ‘end’ -- else可省略 如果不需要 from emp;
- 第二種的 case when (有限制) 一般判斷條件用於等或者不等的 不能用於大於或者小於
case 判斷字段名 when '符合條件1' then '符合條件2' -- when中默認用case后面的字段名進行匹配
when '符合條件2' then '符合條件3'
else(可寫可不寫) 結果3
end '命名的名字'
例子
select *,
case deptno when 10 then '結果1'
when 20 then '結果2'
when 30 then '結果3'
end ‘命名’
from emp;
結果
后面就是我用case when語句的 碰到的錯誤
用第二種方法時候 when后面不能再加判斷的字段名 否則會全部失效 比如
select *,case deptno -- case后面已經有需要判斷的字段名
when deptno=10 then '結果1' -- when 后面又加了判斷名 會導致所有判斷條件全部失效
when deptno= 20 then '結果2'
when deptno=30 then '結果3'
end ‘命名’
from emp;
結果
所以寫的時候要記得用哪個方式 不要重復加了需要判斷的字段名