Sql server 行列互换制作交叉表格报表
2008-12-26 20:25
267 查看
设有一个顾客表,存有如下数据:
现在需要统计不同性别和婚姻下的顾客人数。使用group by 后得到如下结果:
如果能得到交叉表格报表就更为理想,即如下形式:
方案1:sql server 2005新增了pivot运算符,其语法形式为
Select select_list
From table_source pivot
( aggregate_function (value_column)
for pivot_column
in (<column_list>)
) as table_alias
其中table_source是进行数据透视的来源数据,pivot_column是pivot运算符的数据透视字段,pivot_column字段中有哪些数据值要变成输出结果中的字段,必须在column_list中指定。上例中pivot_column是"婚姻"字段,column_list指定为未婚,既婚和不明。即
select
性別,[未婚],[既婚],[不明]
from
顧客表
pivot
(
count(顧客NO)
for
婚姻in
([未婚],[既婚],[不明])
)
as a
注意:要使用pivot运算符,数据库的兼容级别必须设为90.
方案2.很简单,如下
select
性別,count(case
婚姻 when
'未婚'
then
顧客NO
end)
as
未婚,
count(case
婚姻 when
'既婚'
then
顧客NO
end)
as
既婚,
count(case
婚姻 when
'不明'
then
顧客NO
end)
as
不明
from
顧客表
group
by
性別
即灵活使用case。
顧客NO | 性別 | 婚姻 |
100000004 | 女性 | 不明 |
100000006 | 女性 | 不明 |
100000007 | 女性 | 不明 |
1000000008 | 女性 | 未婚 |
1000000045 | 女性 | 未婚 |
1000000047 | 女性 | 未婚 |
1000000052 | 男性 | 未婚 |
100000017 | 男性 | 不明 |
1000000013 | 男性 | 既婚 |
1000000014 | 女性 | 既婚 |
1000000015 | 女性 | 既婚 |
1000000017 | 男性 | 既婚 |
性別 | 婚姻 | 顧客数 |
女性 | 既婚 | 2 |
女性 | 不明 | 3 |
女性 | 未婚 | 3 |
男性 | 既婚 | 2 |
男性 | 不明 | 1 |
男性 | 未婚 | 1 |
性別 | 未婚 | 既婚 | 不明 |
女性 | 3 | 2 | 3 |
男性 | 1 | 2 | 1 |
Select select_list
From table_source pivot
( aggregate_function (value_column)
for pivot_column
in (<column_list>)
) as table_alias
其中table_source是进行数据透视的来源数据,pivot_column是pivot运算符的数据透视字段,pivot_column字段中有哪些数据值要变成输出结果中的字段,必须在column_list中指定。上例中pivot_column是"婚姻"字段,column_list指定为未婚,既婚和不明。即
select
性別,[未婚],[既婚],[不明]
from
顧客表
pivot
(
count(顧客NO)
for
婚姻in
([未婚],[既婚],[不明])
)
as a
注意:要使用pivot运算符,数据库的兼容级别必须设为90.
方案2.很简单,如下
select
性別,count(case
婚姻 when
'未婚'
then
顧客NO
end)
as
未婚,
count(case
婚姻 when
'既婚'
then
顧客NO
end)
as
既婚,
count(case
婚姻 when
'不明'
then
顧客NO
end)
as
不明
from
顧客表
group
by
性別
即灵活使用case。
相关文章推荐
- 灵活数据源的固定行列交叉报表的制作
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- MS SQLServer 交叉报表(行列互换)
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- 灵活数据源的固定行列交叉报表的制作
- MS-SQLServer 2000 T-SQL 交叉报表(行列互换) 交叉查询 旋转查询
- Sql Server中的行列互换
- javascript实现多表头分类交叉报表:html表格
- 如何在SQL Server 2008系统中制作报表
- 如何制作交叉报表-多层交叉
- 报一个比较难以描述的问题【关键字 报表 数据库行列转换 多表交叉查询】
- SQLServer 2005 实现交叉表格报表的利器 PIVOT 和 UNPIVOT 关系运算符
- 用iReport制作一个简单的交叉报表
- javascript实现多表头分类交叉报表:html表格
- sql server 2008 R2 报表制作新功能
- MS_SQL SERVER 行列互换 通用版
- javascript实现多表头分类交叉报表:html表格
- sql server 2012 报表开发(1) 如何使用Reporting Service 2012制作报表
- SQLServer 2005 实现交叉表格报表的利器 PIVOT 和 UNPIVOT 关系运算符
- SQL 二维交叉报表 分类统计(行列转换)