--建立一张表
create table b
(
号码 int,
月份 varchar(200),
费用 Numeric
);
--初始化表数据
insert into b values('138','2006年04月',20);
insert into b values('138','2006年05月',50);
insert into b values('138','2006年06月',30);
insert into b values('139','2006年05月',40);
insert into b values('139','2006年06月',20);
--转换并统计
select
号码,
substring(月份,1,5) as 年份,
sum(case when substring(月份,6,3) = '01月' then 费用 else 0 end ) as '01月',
sum(case when substring(月份,6,3) = '02月' then 费用 else 0 end ) as '02月',
sum(case when substring(月份,6,3) = '03月' then 费用 else 0 end ) as '03月',
sum(case when substring(月份,6,3) = '04月' then 费用 else 0 end ) as '04月',
sum(case when substring(月份,6,3) = '05月' then 费用 else 0 end ) as '05月',
sum(case when substring(月份,6,3) = '05月' then 费用 else 0 end ) as '05月',
sum(case when substring(月份,6,3) = '07月' then 费用 else 0 end ) as '07月',
sum(case when substring(月份,6,3) = '08月' then 费用 else 0 end ) as '08月',
sum(case when substring(月份,6,3) = '09月' then 费用 else 0 end ) as '09月',
sum(case when substring(月份,6,3) = '10月' then 费用 else 0 end ) as '10月',
sum(case when substring(月份,6,3) = '11月' then 费用 else 0 end ) as '11月',
sum(case when substring(月份,6,3) = '12月' then 费用 else 0 end ) as '12月'
from b
group by substring(月份,1,5),号码
order by substring(月份,1,5),号码