Sql 在动态范围内找到多个最小值和最大值
我得到的结果如图所示 我得到了2个值的范围 1) 从79996到80000 2) 从001001到001003 我想要两个最小值79996和001001,还有两个最大值80000和001003 值或范围不是固定的,可以有多个范围 有可能吗 请帮忙Sql 在动态范围内找到多个最小值和最大值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我得到的结果如图所示 我得到了2个值的范围 1) 从79996到80000 2) 从001001到001003 我想要两个最小值79996和001001,还有两个最大值80000和001003 值或范围不是固定的,可以有多个范围 有可能吗 请帮忙 此查询将仅选择连续范围的边界(连续整数,在使用此查询之前,应将字符类型列强制转换为整数): 范围界限的标准是什么?为什么不建立N个范围,例如79996..79998或001003。。。80000 ? select distinct tr_no, cas
此查询将仅选择连续范围的边界(连续整数,在使用此查询之前,应将字符类型列强制转换为整数):
范围界限的标准是什么?为什么不建立N个范围,例如79996..79998或001003。。。80000 ?
select distinct tr_no,
case
when left_ind = 'gap' and right_ind = 'seq' then 'RANGE_MIN'
when left_ind = 'seq' and right_ind = 'gap' then 'RANGE_MAX'
else 'MIN-MAX' end as bound_type
from
(
select job_no, tr_no,
case when abs(tr_no - PREV_TR) = 1 then 'seq' else 'gap' as left_ind,
case when abs(NEXT_TR - tr_no) = 1 then 'seq' else 'gap' as right_ind
from
(
select job_no, tr_no,
LEAD(tr_no) over (order by tr_no) as NEXT_TR,
LAG(tr_no) over (order by tr_no) as PREV_TR
from mytable
) m1
) m2
where left_ind = 'gap' or right_ind = 'gap'