0

在这里,我尝试执行 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 |
4

1 回答 1

0

正如您预期的结果所暗示的那样,该ARRAY_AGG函数不会“聚合和分组数组单元格值”。

相反,它从表变量中获取一列并从中创建一个数组。每个单列值都有自己的单元格。结果是一个数组,其条目数与表变量中的行数相同。

如果您不需要IdouttabARRAY 类型,那么您可以考虑使用STRING_AGG聚合函数。

于 2017-09-04T08:39:32.677 回答