行列转换的另一种形式
来源:互联网 发布:云计算ppt模板免费 编辑:程序博客网 时间:2024/06/08 09:25
在实际做项目的时候遇到这样一个问题:数据库表里存储了每个火车站每种类型的火车票销售数量,但是有的火车站可能不销售动车票或者高铁票,最终的结果要如图2所示,不销售类型的火车票就空出来。本文采用master.dbo.spt_values动态生成最大数目的列头,然后采用case when实现每种类型的火车票进行统计。
原始表 dc
图1
期望得到的数据结果
图2
可以采用下面的脚本实现
declare @tsql varchar(6000)declare @total int --取得不同车站拥有的车型最大数量select @total= max(c) from (select count(1) c from dc group by 站名)tselect @tsql=isnull(@tsql+',','') +'max(case when rn='+rtrim(number)+' then 车型 else '''' end) ''车型'',' +'max(case when rn='+rtrim(number)+' then 数量 else '''' end) ''数量'''from master.dbo.spt_valueswhere type='P' and number between 1 and @totalselect @tsql='select 站名,'+@tsql +' from (select 站名,车型,数量, row_number() over(partition by 站名 order by 车型) ''rn'' from dc) t group by 站名'exec(@tsql)
0 0
- 行列转换的另一种形式
- 另一种形式的OufOfMemoryException
- group by 分组问题(另一种行列转换)
- JSP------Servlet的另一种形式
- SQL的行列转换
- 2005的行列转换
- 简单的行列转换
- 行列转换的SQL
- 行列转换的SQL
- DataTable的行列转换
- 有意思的行列转换
- DataTable的行列转换
- 日期的行列转换
- Oracle的行列转换
- 简单的行列转换
- MySQL的行列转换
- 数据库的行列转换
- Oracle的行列转换
- 三角形类的构造函数(一)
- SSH整合教程
- C# Winform 开机自动启动
- C++的四种cast
- Oracle的JDBC驱动的版本你了解吗?
- 行列转换的另一种形式
- poj 2752 kmp(next数组模板)
- jsp两种包含方式
- HighCharts日期格式化及数值格式化
- Android Service完全解析,关于服务你所需知道的一切(上)
- Eclipse SVN冲突详细解决方案
- Redis学习手册(目录)
- 选择排序
- 实现应用程序的功能