一部のRDBMSにはGROUP_CONCAT()
があります クエリ列を区切りリスト(たとえば、コンマ区切りのリスト)として返すことができる関数。 MySQLとMariaDBは、そのような機能を備えた2つです。
PostgreSQLとSQLServerには、STRING_AGG()
と呼ばれる同様の関数があります。 。
一方、OracleにはLISTAGG()
があります。 ほぼ同じこと(そしておそらくそれ以上)を行う関数。
つまり、LISTAGG()
と言うことができます OracleのGROUP_CONCAT()
です 同等です。
例
これは、OracleのLISTAGG()
がどのように機能するかを示す基本的な例です。 機能は動作します:
SELECT LISTAGG(region_name, ',')
FROM regions;
結果:
LISTAGG(REGION_NAME,',') ______________________________________________ Europe,Americas,Asia,Middle East and Africa
この場合、区切り文字はカンマであると指定しました。
LISTAGG()
を使用せずにクエリを実行するとどうなりますか。 機能:
SELECT region_name
FROM regions;
結果:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
すべての値を含む1つのコンマ区切りの行ではなく、それぞれが個別の値を持つ4つの行を取得します。
LISTAGG()
この関数を使用すると、結果を並べ替えて、一意の値のみを返すこともできます(DISTINCT
を使用) 条項)など。
LISTAGG()
を参照してください その他の例については、Oracleで機能してください。