Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在动态范围内找到多个最小值和最大值_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 在动态范围内找到多个最小值和最大值

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

我得到的结果如图所示

我得到了2个值的范围

1) 从79996到80000

2) 从001001到001003

我想要两个最小值79996和001001,还有两个最大值80000和001003

值或范围不是固定的,可以有多个范围

有可能吗

请帮忙


此查询将仅选择连续范围的边界(连续整数,在使用此查询之前,应将字符类型列强制转换为整数):


范围界限的标准是什么?为什么不建立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'