Oracle SQL: 複数行のデータを 1 行に結合します
データセットが特定の列で構成されている場合、複数の行を 1 つの行にマージする必要がある場合があります。これは、SQL のデータ集計操作を通じて実現できます。
Oracle SQL では、WM_CONCAT
関数を使用すると、複数の値行を結合する簡単な方法が提供されます。ただし、この関数はサポート対象外としてマークされ、Oracle 12c 以降では削除されたことに注意してください。
WM_CONCAT
メソッド (Oracle 12c より前)
Oracle 12c より前では、WM_CONCAT
を使用して値を集計できました:
<code class="language-sql">SELECT field1, WM_CONCAT(field2) FROM YourTable GROUP BY field1;</code>
代替: LISTAGG
(Oracle 12c 以降)
Oracle 12c 以降のデータベースの場合、LISTAGG
は WM_CONCAT
の代替手段を提供します。この関数は、文字列集約タスクに特化した拡張機能を提供します:
<code class="language-sql">SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2) FROM YourTable GROUP BY field1;</code>
カスタム実装
WM_CONCAT
も LISTAGG
も存在しない場合は、サブクエリと文字列操作関数を組み合わせてカスタム実装を作成できます。 関連リンク (oracle-base.com など) には、この方法の詳細な手順が記載されています。
以上がOracle SQLで複数の行を1つに集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。