代码之家  ›  专栏  ›  技术社区  ›  Ewgenij Sokolovski

Oracle SQL:收集聚合

  •  1
  • Ewgenij Sokolovski  · 技术社区  · 6 年前

    我想按属性对我的数据库条目进行分组,并同时知道每个组中有哪些条目。我使用Oracle Collect函数收集分组条目的ID COLLECT Function

    DECLARE
      TYPE ids_type IS TABLE OF number(19, 0);   
      ids ids_type;
    BEGIN 
      select cast(collect(r.id) as ids_type) into ids from rechnungsdaten r group by r.status;
    END;
    

    但是我得到了错误:

    错误报告-
    ORA-06550:第5行,第44列:
    损益表: ORA-00902:数据类型无效
    ORA-06550:第5行第5列:
    pl/sql:sql语句被忽略
    06550号。00000-“行%s,列%s:\n%s”
    *原因:通常是PL/SQL编译错误。
    *操作:

    这里怎么了?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kaushik Nayak    6 年前

    COLLECT

    create or replace TYPE ids_type IS TABLE OF number(19, 0);
    SELECT
        r.status,
        CAST(COLLECT(r.id) AS ids_type)
    FROM
        rechnungsdaten r
    GROUP BY
        r.status;
    

    LISTAGG

    SELECT
        r.status,
        LISTAGG(r.id,',') WITHIN GROUP(
                ORDER BY
                    id
            )
    FROM
        rechnungsdaten r
    GROUP BY
        r.status;
    

    Demo

    推荐文章