这里我尝试使用如下所示的代码执行Array concat:
--CONCATENATE TWO ARRAYS
CREATEPROCEDURE"keerthi"."ARRAY_COMPLEX_CONCAT3"
(OUT OUTTAB TABLE (SEQ INT,ID INT))
LANGUAGE SQLSCRIPT AS BEGIN
DECLARE id1,id2,id3,id4 , id5 INTEGER ARRAY;
id1[1] := 1;
id1[2]:=2;
id2[1] := 1;
id2[2]:=4;
id3 := CONCAT(:id1, :id2);
id4 := :id1 || :id2;
rst = UNNEST(:id3) WITH ORDINALITY AS ("ID","SEQ");
id5 := :id4 || ARRAY_AGG(:rst."ID"ORDERBY"SEQ");
outtab = SELECT SEQ,ID FROM :rst ORDERBY "SEQ";
END;
程序成功执行但结果不符合我的预期:
| Seq | Id |
--------------
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 4 |
结果我的预期是:
| Seq | Id |
--------------
| 1 | 1,2 |
| 2 | 1,4 |
答案 0 :(得分:0)
ARRAY_AGG
函数不会“聚合和分组数组单元格值”,因为您的预期结果意味着。
相反,它从表变量中获取一列,并从中生成一个数组。每个单列值都有自己的单元格。结果是一个数组,其条目数与表变量中的行数相同。
如果您不要求Id
中的outtab
成为ARRAY类型,那么您可以考虑使用STRING_AGG
聚合功能。