首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

50分急求行列转换的SQL语句,该如何处理

2012-01-12 
50分急求行列转换的SQL语句原表:年月数量公司2007年1月10广州分公司2007年2月5广州分公司2007年3月3广州分

50分急求行列转换的SQL语句
原表:
      年月                 数量         公司
2007年1月             10             广州分公司
2007年2月             5               广州分公司
2007年3月             3               广州分公司
2007年1月             8               佛山分公司
2007年2月             10             佛山分公司
2007年4月             80             江门分公司
2007年7月             10             中山分公司

需要查询的表现结果是:
    年月       数量     年月     数量     年月     数量     年月     数量     年月     数量     公司
2007年7月   0   2007年4月   0   2007年3月   3   2007年2月   5   2007年1月   10   广州分公司
2007年7月   0   2007年4月   0   2007年3月   0   2007年2月   10   2007年1月   8   佛山分公司
2007年7月   0   2007年4月   80   2007年3月   0   2007年2月   0   2007年1月   0   江门分公司
2007年7月   10   2007年4月   0   2007年3月   0   2007年2月   0   2007年1月   0   中山分公司

[解决办法]
或者是直接這樣的。

Create Table 表
(年月 Varchar(10),
数量 Int,
公司 Varchar(10))
Insert 表 Select '2007年1月 ', 10, '广州分公司 '
Union All Select '2007年2月 ', 5, '广州分公司 '
Union All Select '2007年3月 ', 3, '广州分公司 '
Union All Select '2007年1月 ', 8, '佛山分公司 '
Union All Select '2007年2月 ', 10, '佛山分公司 '
Union All Select '2007年4月 ', 80, '江门分公司 '
Union All Select '2007年7月 ', 10, '中山分公司 '
GO
Declare @S Varchar(8000)
Select @S = 'Select '
Select @S = @S + ' SUM(Case 年月 When ' ' ' + 年月 + ' ' ' Then 数量 Else 0 End) As [ ' + 年月 + '数量], '
From 表 Group By 年月 Order By 年月 Desc
Select @S = @S + ' 公司 From 表 Group By 公司 '
EXEC(@S)
GO
Drop Table 表
/*
2007年7月数量2007年4月数量2007年3月数量2007年3月数量2007年1月数量公司
100000中山分公司
080000江门分公司
000108佛山分公司
003510广州分公司
*/

热点排行