05_Case語句

--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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章