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

Oracle SQL-行を連結して文字列を作成しますが、X文字を超えないようにします

    次のクエリを試して、目的の結果が得られました。

    SELECT
        LISTAGG(X, ',') WITHIN GROUP(
            ORDER BY
                X
        ) as result
    FROM
        (
            SELECT
                X,
                SUM(LENGTH(X)) OVER(
                ORDER BY
                    X
                ) LENGTH_X,
                COUNT(1) OVER(
                ORDER BY
                    X
                ) - 1 AS COMMAS
            FROM
                (
                    SELECT
                        LEVEL   X
                    FROM
                        DUAL
                    CONNECT BY
                        LEVEL <= 20
                )
        )
    GROUP BY
        CEIL((LENGTH_X + COMMAS) / 15);
    

    出力:

    db<>フィドルデモ

    乾杯!!




    1. テーブル名を変更するHibernateの命名戦略

    2. MariaDBデータベースのすべてのビューを一覧表示する4つの方法

    3. SQLのxlookup関数

    4. CREATEVIEWはバッチ内の唯一のステートメントである必要があります