2009-04-14 4 views
1

用CSVを生成する方法I以下の表があります。オラクルのインライン関係

ALERT (ID,Name) 
    1 | Alert A 
    2 | Alert B 


ALERT_BRAND_XREF (ALERT_ID, BRAND_ID) 
    1 | 1 
    1 | 2 
    2 | 1 

BRAND (ID, NAME) 
    1 | Brand A 
    2 | Brand B 

は、私は1つのフィールドにCSVリストとして適用可能なブランドとアラートのリストを返すために1文を記述しようとしています。希望する結果:

Alert A | Brand A, Brand B 
Alert B | Brand A 

別の関数を記述せずにこれを行う方法はありますか?可能であれば、自己完結型のSQLステートメントでそれを行いたいと思います。

これはOracle 9iです。 MySQLでは

答えて

1

これはGROUP_CONCAT()機能と簡単だろうが、それはそれは少し厄介だオラクルの等価を行うには次のようになります。ここではコンマに繰り返しグループを有効にする別の方法は

Oracle group_concat() updated (again)

0

です設定リスト。 これは、Oracleの方言のSQLのMODEL句を使用します。 (Oracle 10gの)

http://plsqlnotes.blogspot.com/2007/09/using-model-for-generating-csv-by_2227.html#links

(私の以前の間違った答えを置き換えます)。

+0

私は内蔵のCSV発電機を認識していなかった)(wm_concatを使用することができます。その他の詳細は?リンク? –

+0

おっと、私の大失敗。私はあなたの問題を注意深く読まなかった。私はあなたがCSVファイルにすべてのものをダンプしようとしていると思った。ごめんなさい! –

1

this solutionsを見ると、その非常に便利です。 SYS_CONNECT_BY_PATHおよび分析関数の使用。

0

オラクルでは、

SELECT a.Name , wm_concat(b.Name) FROM 
    ALERT a, 
    ALERT_BRAND_XREF abx , 
    BRAND b 
    where a.id = abx.ALERT_ID 
    and abx.BRAND_ID = b.id 
    group by a.Name;