--Case作用
--1:直接使用在SQL语句充当if/else的功能。
Select usersex, t.* From T_Userinfo t;
select usersex,
case usersex
when '1' then
'男'
when '0' then
'女'
else
'未知'
end as usersex_str,
t.*
from T_userinfo t;
select userage,
case
when userage < 10 then
'小学生'
when userage > 10 and userage < 20 then
'中学生'
when userage > 20 and userage < 30 then
'高中生'
else
'大学生'
end as userage_str,
t.*
from T_userinfo t
order by t.userage asc;
--2:在PLSQL程序中替换if/else的功能
declare
v_userage varchar2(10);
v_userage_str varchar2(10);
begin
v_userage := '1';
case v_userage
when '1' then
v_userage_str := '男';
when '0' then
begin
v_userage_str := '女';
end;
else
begin
v_userage_str := '未知';
end;
--plsql中要写end case
end case;
dbms_output.put_line(v_userage_str);
end;
--3:在SQL语句充当行转列的功能。
select * From cj;
select stu_name, --分组字段
--Case的判断
sum(case stu_subject when '语文' then score else 0 end ) as "语文",
sum(case stu_subject when '数学' then score else 0 end ) as "数学",
sum(case stu_subject when '英语' then score else 0 end ) as "英语",
--聚合函数 sum,max,min,avg,count
sum(score) as 小计
from cj group by stu_name;
/*
语文 数学 英语 小计
张三 50 60 70 180
李四
*/
select * from Table1;
select year,
sum(case month when '1' then amount else 0 end) as "1月份",
sum(case month when '2' then amount else 0 end) as "2月份",
sum(case month when '3' then amount else 0 end) as "3月份",
sum(case month when '4' then amount else 0 end) as "4月份",
sum(case month when '5' then amount else 0 end) as "5月份",
sum(case month when '6' then amount else 0 end) as "6月份",
sum(case month when '7' then amount else 0 end) as "7月份"
From Table1 group by year
order by year asc;
05_Case语句
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.