代码之家  ›  专栏  ›  技术社区  ›  Bhawan

红移时数组\u agg()或字符串\u agg()的替代项

  •  2
  • Bhawan  · 技术社区  · 6 年前

    我使用此查询获取聚合结果:

    select _bs, string_agg(_wbns, ',') from bag group by 1;
    

    我得到这个错误:

    运行查询时出错:函数字符串\u agg(字符变化,“未知”) 类型。您可能需要添加显式类型转换。

    我还尝试了array\u agg()并得到了相同的错误。

    3 回复  |  直到 6 年前
        1
  •  8
  •   Zaynul Abadin Tuhin    6 年前

    你必须使用 listagg 用于重新换档

    对于查询中的每个组,listag aggregate函数根据ORDER BY表达式对该组的行进行排序,然后将值串联成单个字符串。

    listag是一个仅计算节点的函数。如果查询未引用用户定义的表或Amazon Redshift系统表,则函数将返回一个错误。

    select _bs, 
    listagg(_wbns,',')
    within group (order by _wbns) as val
    from bag
    group by _bs
    order by _bs;
    

    为了更好的理解 Listagg

        2
  •  1
  •   Mureinik    6 年前

    listagg

    SELECT _bs, LISTAGG(_wbns, ',') FROM bag GROUP BY _bs;
    
        3
  •  1
  •   Fahmi    6 年前

    使用listag函数:

    select _bs, 
    listagg(_wbns,',')
    within group (order by _bs) as val
    from bag
    group by _bs
    
        4
  •  0
  •   dburtsev    4 年前

    找到E了吗rror:One or 必须在至少一个用户创建的表上应用更多已用函数。 仅用户表函数的示例有listag、MEDIAN、PERCENTILE\u CONT等

    SELECT   refc.constraint_name,   refc.update_rule,   refc.delete_rule,   kcu.table_name,   
    LISTAGG(distinct kcu.column_name, ',') AS columns   
    FROM   information_schema.referential_constraints AS refc,   
    information_schema.key_column_usage AS kcu
    WHERE   refc.constraint_schema = 'abc'   AND refc.constraint_name = kcu.constraint_name   AND refc.constraint_schema = kcu.table_schema   
    AND kcu.table_name = 'xyz' 
    GROUP BY   refc.constraint_name,   refc.update_rule,   refc.delete_rule,   kcu.table_name;