2016-02-02 118 views
-3

,可有人告訴我,我怎麼能得到預期的輸出。 (每個獨特的客戶ID必須串聯爲start_term-end_term,率;)串聯使用Oracle 11g與列「 - 」輸入看起來像這樣

輸入:

customer_id start_term end_term rate 
----------- ---------- -------- ---- 
101   61   72   0 
101   37   60   0 
101   24   36   0.9 
102   61   72   2.92 
103   24   36   2.92 
104   61   72   0 
104   37   60   0 
104   24   36   0 

預期輸出:

customer_id rate 
----------- ------------------------- 
101   61-72,0;37-60,0;24-36,0.9 
102   61-72,2.92 
103   24-36,2.92 
104   61-72,0;37-60,0;24-26,0 

感謝

+0

您是否嘗試過任何東西,像谷歌搜索的解決方案嗎? –

回答

1

什麼你需要的是LISTAGG函數。

你可以試試這個:

SELECT customer_id, LISTAGG(start_term || '-' || end_term || ',' || rate, '; ') 
     WITHIN GROUP (ORDER BY rate) AS rate 
    FROM table_name 
GROUP BY customer_id; 
+0

其現在工作對我來說。謝謝 – pavan

1

您正在尋找listagg(),這樣的事情:

select customerid, 
     listagg(start_term || '-' || end_term || ',' || rate, '; ') 
      within group (order by start_term desc) 
from t 
group by customerid; 
+0

現在爲我工作。謝謝 – pavan