SQL报表之行列变换
2008-03-22 17:48
344 查看
/*交叉报表*/
/*行列互换*/
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等聚合函数忽略,造成错误结果
*/
/*行列互换*/
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等聚合函数忽略,造成错误结果
*/
相关文章推荐
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- MS SQLServer 交叉报表(行列互换)
- sql行列变换
- SQL动态行列变换
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- 行列变换、PL/SQL游标加锁
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
- SQL 二维交叉报表 分类统计(行列转换)
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
- SQL行列转换:报表_公司采购表_每个公司各采购了些什么产品
- sql 行列转化/交叉报表的实现
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- 今天在csdn上遇到一个问题,是关于sql数据行列转换的,我的写法如下:
- Hot Tip - SQL 报表服务(Reporting Services) RDL
- SQL 行列转换
- oracle - 作报表需要的一些sql
- SQL2005报表服务不能启动问题总结报告
- SQL普通行列转换 (纵表转横表 )
- .net 使用提取模式使用SQL创建报表 出现“您请求的报表需要更多信息.”的解决方法
- 成绩管理系统中的成绩报表SQL