S02051

错误代码

S02051

报错信息

Row reduction operation <xxx> cannot be used with PIVOT BY clause within an EXEC statement. RefId: S02051

错误原因

在调用 EXEC 执行查询时,PIVOT BY 返回的结果是一个矩阵,此时不支持对结果应用 row 系列函数

def createMyTable(n) {
    intv = take(1..10, n)
    symbol = take(`a`b`c, n)
    id = rand(100, n)
    strv = take("abs" + string(1..10), n)
    doublev = rand(10.0, n)
    return table(intv, strv, doublev, id, symbol)
}

n = 100
t = createMyTable(n)

EXEC rowSum(doublev) FROM t PIVOT BY id, symbol; // 报错
SELECT rowSum(doublev) FROM t PIVOT BY id, symbol; // 正常

解决办法

将 EXEC 替换为 SELECT,因为 SELECT 返回的结果是一个表。后续可以依据需要将表转为矩阵,或直接使用表。