2013-04-30 104 views
2

我堅持這一要求 -列轉換爲行

我在格式一些數據

enter image description here

(條目現在顯示了兩個週期(數據2011年1月)和(2月。2011)與同意分開出現在同一行)。

最後我需要使用dbms_output.put_line命令打印數據。

我使用的是Oracle 10.2g。

+0

SELECT ce_id,ce_nm,tmp_nm,月, ROW_NUMBER()OVER(分區按月爲了通過ROWNUM)氡 FROM ( 選擇d.ce_id,d.ce_nm,b.tmp_nm,TO_CHAR(C。 log_ts, 'MON.YYYY')月,總和(c.total_enters)從v_ce_tmp A進入 ,TTMP b,mv_tmp_daily_traffic C,TCE d 其中a.tmp_id = c.tmp_id和 \t \t \t b.tmp_id = C。 tmp_id和 d.ce_id = a.ce_id和 \t \t \t c.log_ts'01-Jan-2011'和'28 -Feb-2011'之間以及 a.ce_id = 286 group by d.ce_id,d.ce_nm,to_char(c.log_ts,'MON.YYYY'),b.tmp_nm order by to_char(c.log_ts,'MON.YYYY')DESC ) – redsoxlost 2013-04-30 08:37:56

回答

0

Oracle 10g沒有PIVOT功能,但您可以使用具有CASE表達式的聚合函數將數據行轉換爲列。基本語法是:

select d.id, 
    d.site, 
    d.entrance, 
    sum(case when d.date = 'Jan.2011' then enters else 0 end) "Jan.2011", 
    sum(case when d.date = 'Feb.2011' then enters else 0 end) "Feb.2011" 
from 
(
    select id, site, entrance, date, enters 
    from yourdata 
) d 
group by d.id, d.site, d.entrance; 

注意:您可以yourdata與您當前的查詢替換子查詢。