看下原来代码:
将kpi_name这一列进行在一行显示
一、不用分组、聚合函数
--测试不用聚合分组函数
select
kpi_date,
tyt_name,
(case when kpi_name='换卡' then kpi_value end ) G4指标,
(case when kpi_name='换卡' then num_value end ) G4完成数,
( (case when kpi_name='换卡' then num_value end )/ (case when kpi_name='换卡' then kpi_value end )) G4完成率,
(case when kpi_name='流量包新增' then kpi_value end ) 流量包新增指标,
(case when kpi_name='流量包新增' then num_value end ) 流量包新增完成数,
( (case when kpi_name='流量包新增' then num_value end )/ (case when kpi_name='流量包新增' then kpi_value end )) 流量包新增完成率,
(case when kpi_name='飞享迁移' then kpi_value end ) 飞享迁移指标,
(case when kpi_name='飞享迁移' then num_value end ) 飞享迁移完成数,
( (case when kpi_name='飞享迁移' then num_value end )/ (case when kpi_name='飞享迁移' then kpi_value end )) 飞享迁移完成率,
(case when kpi_name='流量包提档' then kpi_value end ) 流量包提档指标,
(case when kpi_name='流量包提档' then num_value end ) 流量包提档完成数,
( (case when kpi_name='流量包提档' then num_value end )/ (case when kpi_name='流量包提档' then kpi_value end )) 流量包提档完成率,
(case when kpi_name='宽带' then kpi_value end ) 宽带指标,
(case when kpi_name='宽带' then num_value end ) 宽带完成数,
(case when kpi_name='宽带电视' then kpi_value end ) 宽带电视指标,
(case when kpi_name='宽带电视' then num_value end ) 宽带电视完成数,
(case when kpi_name='宽带含电视' then kpi_value end ) 宽带含电视指标,
(case when kpi_name='宽带含电视' then num_value end ) 宽带含电视完成数,
( (case when kpi_name='宽带含电视' then num_value end )/ (case when kpi_name='宽带含电视' then kpi_value end )) 宽带含电视完成率,
(case when kpi_name='手厅' then kpi_value end ) 手厅指标,
(case when kpi_name='手厅' then num_value end ) 手厅完成数,
( (case when kpi_name='手厅' then num_value end )/ (case when kpi_name='手厅' then kpi_value end )) 手厅完成率
from sbf_rpt_yy_daily@sxyw
where tyt_name is not null and type='1' AND kpi_date='20150920'
order by kpi_date desc,decode(tyt_name,'合计','终合计',tyt_name);
显然,因为使用了case when 语句,所以,造成了不同数据显示在不同行的情况的出现。
所以,需要将不同行的数据合并到一行去,就需要聚合函数(分组函数必须和聚合函数同时使用)
二、使用分组,聚合函数
--now hjy
select
kpi_date,
tyt_name,
sum(case when kpi_name='换卡' then kpi_value end ) G4指标,
sum(case when kpi_name='换卡' then num_value end ) G4完成数,
(sum(case when kpi_name='换卡' then num_value end )/sum(case when kpi_name='换卡' then kpi_value end )) G4完成率,
sum(case when kpi_name='流量包新增' then kpi_value end ) 流量包新增指标,
sum(case when kpi_name='流量包新增' then num_value end ) 流量包新增完成数,
(sum(case when kpi_name='流量包新增' then num_value end )/sum(case when kpi_name='流量包新增' then kpi_value end )) 流量包新增完成率,
sum(case when kpi_name='飞享迁移' then kpi_value end ) 飞享迁移指标,
sum(case when kpi_name='飞享迁移' then num_value end ) 飞享迁移完成数,
(sum(case when kpi_name='飞享迁移' then num_value end )/sum(case when kpi_name='飞享迁移' then kpi_value end )) 飞享迁移完成率,
sum(case when kpi_name='流量包提档' then kpi_value end ) 流量包提档指标,
sum(case when kpi_name='流量包提档' then num_value end ) 流量包提档完成数,
(sum(case when kpi_name='流量包提档' then num_value end )/sum(case when kpi_name='流量包提档' then kpi_value end )) 流量包提档完成率,
sum(case when kpi_name='宽带' then kpi_value end ) 宽带指标,
sum(case when kpi_name='宽带' then num_value end ) 宽带完成数,
sum(case when kpi_name='宽带电视' then kpi_value end ) 宽带电视指标,
sum(case when kpi_name='宽带电视' then num_value end ) 宽带电视完成数,
sum(case when kpi_name='宽带含电视' then kpi_value end ) 宽带含电视指标,
sum(case when kpi_name='宽带含电视' then num_value end ) 宽带含电视完成数,
(sum(case when kpi_name='宽带含电视' then num_value end )/sum(case when kpi_name='宽带含电视' then kpi_value end )) 宽带含电视完成率,
sum(case when kpi_name='手厅' then kpi_value end ) 手厅指标,
sum(case when kpi_name='手厅' then num_value end ) 手厅完成数,
(sum(case when kpi_name='手厅' then num_value end )/sum(case when kpi_name='手厅' then kpi_value end )) 手厅完成率
from sbf_rpt_yy_daily@sxyw
where tyt_name is not null and type='1'
group by kpi_date,tyt_name
order by kpi_date desc,decode(tyt_name,'合计','终合计',tyt_name);