我有一个sql查询使用listagg函数创建一个逗号分隔列表到一个正常工作的返回字段。但是我想只包括顺序排序的结果具有顺序序列号的结果。它们必须都以0开头,但没有特定的结束序列号。他们有时会跳过序列号,所以我想删除那些
所以例如,我想要包含看起来像这样的值
0
0,1
0,1,2
0,1,2,3
但我想跳过看起来像
的结果1
0,2
0,1,3
0,0,2
是否有一些SQL语法可以像这样过滤掉值?
答案 0 :(得分:2)
您可以使用having
子句执行此操作:
select listagg(col, ',') . . .
from t
group by . . .
having min(col) = 0 and
count(*) = count(distinct col) and
max(col) = count(*) - 1
这些条件应确保过滤掉具有非连续值的行。