sql >> データベース >  >> RDS >> Oracle

mysqlのgroup_concatに似たOracleの関数はありますか?

    11g以上: listaggを使用する:

    SELECT 
        col1,
        LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
    FROM table_x
    GROUP BY col1
    

    10g以下: 1つの方法は、関数を使用することです:

    CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val  in  number)
      RETURN VARCHAR2
    IS
      return_text  VARCHAR2(10000) := NULL;
    BEGIN
      FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
        return_text := return_text || ',' || x.col2 ;
      END LOOP;
      RETURN LTRIM(return_text, ',');
    END;
    /
    

    機能を使用するには:

    select col1, get_comma_separated_value(col1) from table_name
    

    注: (サポートされていない)関数WM_CONCATがあります Oracleの特定の古いバージョンで利用可能であり、役立つ可能性があります。詳細については、こちらを参照してください。

    MySQLの場合:

    SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1
    



    1. Access2016で空白のフォームを作成する方法

    2. エラー:psycopg2.extensionsという名前のモジュールがありません

    3. PHPを使用してチェックボックスを選択し、複数の行を削除します

    4. SQLでの日時から合計分まで