我正在使用此页上的代码按组聚合创建字符串的串联列表。
https://dwgeek.com/netezza-group_concat-alternative-working-example.html/
我尝试按排序顺序获取连接的字符串,例如 DB1
我会得到 data1,data2,data5,data9
我将修改原始代码与从预先排序的表中进行选择联系起来,但似乎没有任何区别。
select Col1
, count(*) as NUM_OF_ROWS
, trim(trailing ',' from SETNZ..replace(SETNZ..replace (SETNZ..XMLserialize(SETNZ..XMLagg(SETNZ..XMLElement('X',col2))), '<X>','' ),'</X>' ,',' )) AS NZ_CONCAT_STRING
from
(select * from tbl_concat_demo order by 1,2) AS A
group by Col1
order by 1;
有没有办法在字符串聚合之前对其进行排序?
顺便说一句-我知道netezza有一个group_concat udf函数,但我不能访问它。
1条答案
按热度按时间tag5nh1u1#
众所周知,在sql中很难做到这一点,因为排序通常是在返回数据时完成的,而且您希望在“input”集中完成。
尝试以下操作:1)创建临时表x作为select*from tbl\u concat\u demo order by col2 partition by(col1)
在上面的原始代码中:选择x而不是tbl\u concat\u demo
让我知道它是否有效?