看下原來代碼:
將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);