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

行列转换有关问题!

2013-06-19 
行列转换问题!!!时间刻度 医院等级补偿人次费用总额可报总额补偿总额2012 2级医院415.001164.8311887.31 8

行列转换问题!!!

     
时间刻度 医院等级    补偿人次    费用总额       可报总额    补偿总额
2012 2级医院     415.001164.83  11887.31 84706.70
2012 3级医院     1998.0016862.6810074.8495725.30

2013 2级医院      415.0011578.8311887.3184076.70
2013 3级医院     1998.0016962.6815074.8495725.30

将以上数据转换成下面格式:

医院等级     统计指标    2012年      2013年
2级医院 补偿人次4159.00     4159.00
2级医院 费用总额1578.83     1578.83
2级医院 可报总额1887.31     1887.31
2级医院 补偿总额8376.70     8376.70
3级医院 补偿人次1998.00     1998.00
3级医院     费用总额1962.68     1962.68
3级医院 可报总额1004.84     1004.84
3级医院     补偿总额9725.30     9725.30

只有一年数据的时候, 我能实现,  现在几年的实现不了了。。。。  求指点。

[解决办法]
用PIVOT运算符吧
[解决办法]
create table ROWTOCOUNT
(
时间刻度 VARCHAR(10),
医院等级 VARCHAR(20),
补偿人次  FLOAT(8),
费用总额   FLOAT(8),
可报总额 FLOAT(8),
补偿总额 FLOAT(8)
)
INSERT INTO ROWTOCOUNT
SELECT '2012','2级医院' , 415.00,1164.83,11887.31,84706.70
UNION ALL
SELECT '2012','3级医院',1998.00 ,16862.68 ,10074.84 ,95725.30 
UNION ALL
SELECT '2013','2级医院',415.00 ,11578.83, 11887.31,84076.70
UNION ALL
SELECT '2013','3级医院',1998.00,16962.68,15074.84 ,95725.30 




with #a
 as
(
select 时间刻度,医院等级,统计指标='补偿人次',年份=补偿人次
 from ROWTOCOUNT
union all
select 时间刻度,医院等级,统计指标='费用总额',年份=费用总额
 from ROWTOCOUNT
union all
select 时间刻度,医院等级,统计指标='可报总额',年份=可报总额
 from ROWTOCOUNT
union all
select 时间刻度,医院等级,统计指标='补偿总额',年份= 补偿总额
 from ROWTOCOUNT
 )


select 医院等级,
  统计指标,
  MAX(case 时间刻度 when '2012' then 年份 end) '2012年',
  MAX(case 时间刻度 when '2013' then 年份 end) '2013年'
  from #a
  group by 医院等级,统计指标
  order by 医院等级

热点排行