仅返回来自oracle

时间:2017-03-04 18:50:54

标签: sql oracle

我有一个sql查询使用listagg函数创建一个逗号分隔列表到一个正常工作的返回字段。但是我想只包括顺序排序的结果具有顺序序列号的结果。它们必须都以0开头,但没有特定的结束序列号。他们有时会跳过序列号,所以我想删除那些

所以例如,我想要包含看起来像这样的值

0
0,1
0,1,2
0,1,2,3

但我想跳过看起来像

的结果
1
0,2
0,1,3
0,0,2

是否有一些SQL语法可以像这样过滤掉值?

1 个答案:

答案 0 :(得分:2)

您可以使用having子句执行此操作:

select listagg(col, ',') . . .
from t
group by . . .
having min(col) = 0 and
       count(*) = count(distinct col) and
       max(col) = count(*) - 1

这些条件应确保过滤掉具有非连续值的行。