SAP Hana - STRING_AGG问题与ORDER BY CLAUSE

时间:2016-10-14 14:56:03

标签: aggregate-functions window-functions hana

我们目前在SAP Hana SPS12中面临Window Functions的问题。

我们的一个错误是当我们使用STRING_AGG函数时。

以下是代码:

/*
CREATE TABLE TEST_STR_AGG (
     GROUP_ID varchar(1)
     , CLASS_ID varchar(5)
     , MEMBER varchar(5)
);
*/

TRUNCATE TABLE TEST_STR_AGG;

INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX1', 'A0001');
INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX1', 'A0002');
INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX1', 'A0003');
INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX2', 'A0004');
INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX2', 'A0005');
INSERT INTO TEST_STR_AGG VALUES ('A', 'A_XX3', 'A0006');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX1', 'B0001');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX2', 'B0002');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX3', 'B0003');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX4', 'B0004');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX4', 'B0005');
INSERT INTO TEST_STR_AGG VALUES ('B', 'B_XX4', 'B0006');

SELECT GROUP_ID
    , CLASS_ID
    , STRING_AGG( MEMBER, ' ; '  **ORDER BY MEMBER ASC** ) as MEMBERS
FROM TEST_STR_AGG
GROUP BY GROUP_ID
    , CLASS_ID ;

在安装补丁之前,STRING_AGG曾与ORDER BY子句完美配合。现在,它只使用少量线条,因为它在我给你的例子中起作用。当我们处理超过500k行时,如果我们在ORDER BY 中添加STRING_AGG子句,则某些行会从结果中消失。如果我们不是,它就有效 我们在FIRST_VALUELAST_VALUE函数上遇到了同样的问题。

这似乎是破坏结果的核心优化规则......

有人对此有所了解吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

是的,这是一个已知的错误。暂时没有准备好SAP备注,但它已在当前版本中修复。

/ - 为此找到了SAP说明:

2365540 - 聚合函数AVG()返回? / NULL值与STRING_AGG结合使用时包括ORDER BY子句

  

解   应用SAP HANA数据库修订版> = 112.07(SPS11)或> = 122.02(SPS12)。

- /