SQL报表之行列变换

来源:互联网 发布:js求两个数最大公约数 编辑:程序博客网 时间:2024/05/18 07:06
/*交叉报表*/
  
  
  /*行列互换*/
  create table pivot
  (
   year int,
   quarter int,
   amount real
  )
  --季度营业额表
  insert into pivot values (1990, 1, 1.1)
  insert into pivot values (1990, 2, 1.2)
  insert into pivot values (1990, 3, 1.3)
  insert into pivot values (1990, 4, 1.4)
  insert into pivot values (1991, 1, 2.1)
  insert into pivot values (1991, 2, 2.2)
  insert into pivot values (1991, 3, 2.3)
  insert into pivot values (1991, 4, 2.4)
  
  select * from pivot
  --原始结果集
  select year,
   sum(case quarter when 1 then amount else 0 end) as Q1,
   sum(case quarter when 2 then amount else 0 end) as Q2,
   sum(case quarter when 3 then amount else 0 end) as Q3,
   sum(case quarter when 4 then amount else 0 end) as Q4
  from pivot
  group by year
  --行列互换后的结果集
  /*
  case:如果季度的值为1,则转换为amount列,否则计0,并将次列起别名为Q1
  sum:求和,若符合条件则对该季度求和,不符合聚合0,
  为0处不可为null,null将被sum和avg等聚合函数忽略,造成错误结果
  */
 
原创粉丝点击