SQL行列转换
2014-11-26 10:16
253 查看
有人问了个比较典型行列转换的问题,想想,解答如下:
数据库有一张表:
是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品:
哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的,
我想了很久也没什么好方法,请问有办法吗?
解题思维步骤:
先找到未行列转换的数据,分组查看数据试试:
select CompanyName,ProductName,COUNT(*)as num from dbo.Orders group by ProductName,CompanyName order by CompanyName
去看看我给你们的分页存储过程,看看拼接sql语句字符串和执行的过程,然后把思路打开一下试试
两者结合起来,答案:
1 declare @sql varchar(8000)--声明一个字符串变量
2 set @sql='select CompanyName,'--开始设置语句
3 --------动态生成语句begin(开始转成列)-----
4 select @sql=@sql+'sum(case when ProductName='''+ProductName+''' then num else 0 end)['+ProductName+'],'
5 from (select distinct top 100 percent ProductName from Orders order by ProductName)a
6 --------动态生成语句 end--------------------
7 set @sql =left(@sql,len(@sql)-1)+' from (select CompanyName,ProductName,COUNT(*)as num
from dbo.Orders group by ProductName,CompanyName)a group by CompanyName'
8 print @sql --打印输出最终执行的SQL
9 exec(@sql)--执行SQL字符串
数据库有一张表:
是个公司采购表,想转化成如下报表,显示每个公司各采购了些什么产品:
哪些公司采购哪些产品是不确定的,所以报表的列有哪几项是不确定的,
我想了很久也没什么好方法,请问有办法吗?
解题思维步骤:
先找到未行列转换的数据,分组查看数据试试:
select CompanyName,ProductName,COUNT(*)as num from dbo.Orders group by ProductName,CompanyName order by CompanyName
去看看我给你们的分页存储过程,看看拼接sql语句字符串和执行的过程,然后把思路打开一下试试
两者结合起来,答案:
1 declare @sql varchar(8000)--声明一个字符串变量
2 set @sql='select CompanyName,'--开始设置语句
3 --------动态生成语句begin(开始转成列)-----
4 select @sql=@sql+'sum(case when ProductName='''+ProductName+''' then num else 0 end)['+ProductName+'],'
5 from (select distinct top 100 percent ProductName from Orders order by ProductName)a
6 --------动态生成语句 end--------------------
7 set @sql =left(@sql,len(@sql)-1)+' from (select CompanyName,ProductName,COUNT(*)as num
from dbo.Orders group by ProductName,CompanyName)a group by CompanyName'
8 print @sql --打印输出最终执行的SQL
9 exec(@sql)--执行SQL字符串
相关文章推荐
- SQL行列转换实战(转载)
- 一个SQL语句的问题:行列转换
- sql2005 行列转换的例子
- 动态SQL的使用例子, 行列转换.
- SQL行列转换实战
- SQL行列转换实战
- SQL行列转换实战
- 用SQL实现行列转换的一个例子
- SQL行列转换实战
- 一些sql 语句(行列转换等) [转载]
- 动态SQL的使用例子, 行列转换.
- SQL行列转换(转载)
- sql行列转换 交叉表
- SQL 行列转换查询
- 有行统计项和列统计项的行列转换,以及EXCEL导入SQL的简单应用
- SQL的行列转换问题
- 常用的sql语句之行列转换
- SQL 语句汇总-Bulk Collect Into及行列转换
- SQL 二维交叉报表 分类统计(行列转换)
- Sql中关于行列转换问题