Oracle SQL: LISTAGG を使用した複数の行にわたる列値の結合
Oracle では、複数の行のデータを単一の文字列に結合する方法がいくつか提供されています。 LISTAGG
関数は特に効果的な方法です。
テーブル A (値 A、B、C を含む PID
列を持つ) とテーブル B (PID
、SEQ
、および Desc
列を持つ) の 2 つのテーブルがあるとします。 目的は、表 B の Desc
値を PID
でグループ化し、SEQ
で順序付けして、結果セット内の単一の Description
列に連結することです。
LISTAGG
を使用してこれを実現する方法は次のとおりです。
<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description FROM B GROUP BY pid;</code>
このクエリは、LISTAGG
を使用して、一意の各 Desc
の PID
値を集計し、SEQ
列で順序付けし、区切り文字としてスペース (' ') を使用します。出力では、各 PID
とそれに対応する連結された Desc
値が description
列に表示されます。
のみを含めるには、単にこのクエリをテーブル A と結合します:PID
<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description FROM A a JOIN B b ON a.pid = b.pid GROUP BY a.pid;</code>
重要な考慮事項: は通常、LISTAGG
データ型で正しく機能します。VARCHAR2
以上がLISTAGG を使用して Oracle SQL の複数の行の列値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。