2017-05-30 6 views
2

こんにちは私は1つの要件があります。私は私のテーブルの下にデータがあります。私はこれが可能である知っているかもしれデータを結合したクエリによるSqlグループ

REASON      FLIGHT_KEY_ID   FLIGHT_NO 
abcddf,Jump Seats,Jump Seats 0201_03/02/2016_MCT_BOM 201 
Last minute immigration  0225_28/04/2016_MCT_COK 225 

ID  REASON      FLIGHT_KEY_ID   FLIGHT_NO       
1709 abcddf      0201_03/02/2016_MCT_BOM 201      
1704 Jump Seats     0201_03/02/2016_MCT_BOM 201      
1706 Others      0201_03/02/2016_MCT_BOM 201      
1717 Last minute immigration 0225_28/04/2016_MCT_COK 225      
1716 Last minute immigration 0225_28/04/2016_MCT_COK 225      
1705 Last minute immigration 0225_28/04/2016_MCT_COK 225 

結果はすべきですか?どんな助けもありがとう。ありがとうございました。あなたが使用することができます

+0

'rdbms'を?? 'Oracle/mssql/mysql ...' ?? – Praveen

+0

ありがとうございます。 Oracle –

+0

なぜ結果リストは2つの座席を別々に乗り越えればよいのでしょうか? – xQbert

答えて

2

Listaggは、ご使用のバージョンではご利用いただけません。以前のバージョンのOracleでは、文書化されていない機能としてwm_concatが提供されていました。 (ご自身の責任で使用して、アップグレードパスではありません注意してください(12cに存在していない))

SELECT 
    wm_Concat(distinct reason) reason, 
    FLIGHT_KEY_ID, 
    FLIGHT_NO 
FROM my_table 
GROUP BY FLIGHT_KEY_ID, FLIGHT_NO 

はトムを確認する: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9529613900346315631

3

LISTAGG

注:Oracleバージョン11gのからのみ利用可能ListAgg。古いバージョンの場合はxQbert答えを参照してください。

試してください。

select 
    LISTAGG(reason, ',') WITHIN GROUP (ORDER BY FLIGHT_NO) reason, 
    FLIGHT_KEY_ID, 
    FLIGHT_NO 
from my_table 
group by FLIGHT_KEY_ID, FLIGHT_NO 

あなただけdistinctreasonsをしたい場合は、

select 
    LISTAGG(reason, ',') WITHIN GROUP (ORDER BY FLIGHT_NO) reason, 
    FLIGHT_KEY_ID, 
    FLIGHT_NO 
from (
    select 
     distinct reason, 
     FLIGHT_KEY_ID, 
     FLIGHT_NO 
    from my_table  
) 
group by FLIGHT_KEY_ID, FLIGHT_NO 
+0

ありがとうございます。私は "LISTAGG"を取得しました:無効な識別子。 –

+0

使用しているOracleバージョン?? 'listgg'は' Oracle11g'からのみ利用可能です。 – Praveen

+0

2番目のフライトが予想された結果で繰り返されていないことを前提に、リスト内にdistinctを必要とするかもしれません。 – xQbert

関連する問題