mysql case when的使用

方法一: 如果对case when的查询结果起别名,一定要放在end之后。 

SELECT username,amount, 

           CASE STATUS
           WHEN 1 THEN '申请中' 
           WHEN 2 THEN '被锁定' 
           WHEN 3 THEN '已同意' 
           ELSE  '已取消' END STATUS

           FROM application;



方法二:

SELECT      
CASE WHEN STATE = '1' THEN '成功' 
WHEN STATE = '2' THEN '失败'
ELSE '其他' END  

FROM  SYS_SCHEDULER


例如:

有员工表empinfo 

Fempno varchar2(10) not null pk, 
Fempname varchar2(20) not null, 
Fage number not null, 
Fsalary number not null 
); 
假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人: 
fsalary>9999 and fage > 35 
fsalary>9999 and fage < 35 
fsalary <9999 and fage > 35 
fsalary <9999 and fage < 35 
每种员工的数量; 
select sum(case when fsalary > 9999 and fage > 35
then 1
else 0end) as "fsalary>9999_fage>35",
sum(case when fsalary > 9999 and fage < 35
then 1
else 0
end) as "fsalary>9999_fage<35",
sum(case when fsalary < 9999 and fage > 35
then 1
else 0
end) as "fsalary<9999_fage>35",
sum(case when fsalary < 9999 and fage < 35
then 1
else 0
end) as "fsalary<9999_fage<35"
from empinfo;


猜你喜欢

转载自blog.csdn.net/pinming_sanlang1990/article/details/80899278