1. ホーム
  2. sql

[解決済み】Oracleで複数行のカラム値を連結するSQLクエリ

2022-04-16 02:23:07

質問

のカラム値を連結するSQLを作成することは可能でしょうか? 複数行の場合

以下はその一例です。

表A

PID
A
B
C

テーブルB

PID SEQ Desc

A 1 持っている
A 2 素敵な
A 3日目
B 1 ナイス・ワーク
C 1 はい
C 2 we can 
C 3する 
C 4この仕事!?

SQLの出力は-になるはずです。

PIDの説明
A 良い一日をお過ごしください。
B Nice Work.
C Yes we can do this work!

つまり、基本的にout putテーブルのDesc列は、テーブルBのSEQ値を連結したものなのですね。

SQLのヘルプはありますか?

どのように解決するのですか?

バージョンによっていくつかの方法があります。 文字列集約のテクニックに関するOracleのドキュメント . 非常に一般的なのは LISTAGG :

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B GROUP BY pid;

次に A を選んで pids を選択します。

アウトオブザボックス LISTAGG とのみ正しく動作します。 VARCHAR2 カラムを使用します。