--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語句
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.