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

简单的行转列,请,

2012-03-09 
简单的行转列,请高手指点,急数据结构如下:公司名称科目代码科目名称年度期间余额a公司1001现金200716056.0

简单的行转列,请高手指点,急
数据结构如下:
公司名称   科目代码     科目名称   年度   期间                 余额
a公司1001现金200716056.0400
a公司1001现金20072585.9500
a公司1001现金200731613.9600
a公司1001现金200748047.0800
a公司1001现金200757801.4600
b公司1001现金200711301.5800
b公司1001现金200721241.1200
b公司1001现金20073941.0500
b公司1001现金200742117.1500
b公司1001现金20075832.5200
要求变成如下的样式:
公司名称   科目代码     科目名称   1月                   2月                     3月             4月         5月  
a公司         1001             现金           6056.0400     585.9500       1613.9600     8047.0800     7801.4600
..................

[解决办法]
select
公司名称 ,科目代码, 科目名称 ,
case sum(when 期间=1 then 余额 else 0 end)as [1月],
case sum(when 期间=2 then 余额 else 0 end)as [2月],
case sum(when 期间=3 then 余额 else 0 end)as [3月],
case sum(when 期间=4 then 余额 else 0 end)as [4月],
case sum(when 期间=5 then 余额 else 0 end)as [5月],
case sum(when 期间=6 then 余额 else 0 end)as [6月],
case sum(when 期间=7 then 余额 else 0 end)as [7月],
case sum(when 期间=8 then 余额 else 0 end)as [8月],
case sum(when 期间=9 then 余额 else 0 end)as [9月],
case sum(when 期间=10 then 余额 else 0 end)as [10月],
case sum(when 期间=11 then 余额 else 0 end)as [11月],
case sum(when 期间=12 then 余额 else 0 end)as [12月]
from 表
group by 公司名称 ,科目代码, 科目名称
[解决办法]
select
公司名称 ,科目代码, 科目名称 ,
sum(case when 期间=1 then 余额 else 0 end) [1月],
sum(case when 期间=2 then 余额 else 0 end) [2月],
sum(case when 期间=3 then 余额 else 0 end) [3月],
sum(case when 期间=4 then 余额 else 0 end) [4月],
sum(case when 期间=5 then 余额 else 0 end) [5月],
sum(case when 期间=6 then 余额 else 0 end) [6月],
sum(case when 期间=7 then 余额 else 0 end) [7月],
sum(case when 期间=8 then 余额 else 0 end) [8月],
sum(case when 期间=9 then 余额 else 0 end) [9月],
sum(case when 期间=10 then 余额 else 0 end) [10月],
sum(case when 期间=11 then 余额 else 0 end) [11月],
sum(case when 期间=12 then 余额 else 0 end) [12月]
from 表
group by 公司名称 ,科目代码, 科目名称

热点排行