我们目前在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_VALUE
和LAST_VALUE
函数上遇到了同样的问题。
这似乎是破坏结果的核心优化规则......
有人对此有所了解吗?
非常感谢
答案 0 :(得分:2)
是的,这是一个已知的错误。暂时没有准备好SAP备注,但它已在当前版本中修复。
/ - 为此找到了SAP说明:
2365540 - 聚合函数AVG()返回? / NULL值与STRING_AGG结合使用时包括ORDER BY子句
解 应用SAP HANA数据库修订版> = 112.07(SPS11)或> = 122.02(SPS12)。
- /