ホームページ >データベース >mysql チュートリアル >LISTAGG を使用して Oracle SQL の複数の行の列値を連結するにはどうすればよいですか?

LISTAGG を使用して Oracle SQL の複数の行の列値を連結するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-23 15:11:12189ブラウズ

How Can I Concatenate Column Values from Multiple Rows in Oracle SQL Using LISTAGG?

Oracle SQL: LISTAGG を使用した複数の行にわたる列値の結合

Oracle では、複数の行のデータを単一の文字列に結合する方法がいくつか提供されています。 LISTAGG 関数は特に効果的な方法です。

テーブル A (値 A、B、C を含む PID 列を持つ) とテーブル B (PIDSEQ、および 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 を使用して、一意の各 DescPID 値を集計し、SEQ 列で順序付けし、区切り文字としてスペース (' ') を使用します。出力では、各 PID とそれに対応する連結された Desc 値が description 列に表示されます。

テーブル A に存在する

のみを含めるには、単にこのクエリをテーブル 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。