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;

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