【问题标题】:Array_agg() functionally in teradatateradata 中的 Array_agg() 功能
【发布时间】:2020-12-23 12:47:47
【问题描述】:

我有以下列的表格。

Emp name,emp id,emp ph no 
X,1,99
X,2,10
Y,2,30

输出:

x,1,(99,10)

根据电话数组中的emp名称和emp Id的顺序

查询:

select emp-name,array_agg(emp_phno order by emp_id) from emp

错误:

使用无效数量或类型的参数调用的函数 array_agg

问题是什么,我该如何解决?

【问题讨论】:

  • 您必须先创建数组类型(如果您有权限这样做),然后将其用作array_expression 参数。
  • @Andrew 你能提供一个示例代码吗?

标签: teradata


【解决方案1】:

首先,您需要定义一个数组类型来保存聚合结果。这就像

CREATE TYPE emp_phno_arr AS VARCHAR(10) ARRAY[5];

在上面的 SQL 中注意VARCHAR 的大小。我将其设置为 10,因为这是北美电话号码的长度。您可能希望它具有不同的长度。也不是数组的大小。我将其设置为 5。这意味着聚合将允许每人最多 5 个电话号码。如果数量超过 5 个,则聚合将失败。但是您可以根据需要更改数组的大小。

接下来您将要进行聚合。

SELECT emp-name, ARRAY_AGG(emp_phno, NEW emp_phno_arr()) FROM emp GROUP BY  emp-name;

注意ARRAY_AGG 函数的第二个参数。它为您在第一个 SQL 语句中创建的新数组类型调用构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2020-06-08
    • 2019-01-03
    • 2021-07-21
    • 2018-05-05
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多