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

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

Patricia Arquette
リリース: 2025-01-23 15:11:12
オリジナル
149 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート