SELECT T2.number 单号 FROM 原始数据 T1 RIGHT JOIN master..spt_values T2 ON T1.单号=T2.number WHERE T2.type='P'AND T2.number>0 AND T2.number<=200 AND T1.单号 IS NULL直接和数字表连接不就出来了吗
Select * from(select ROW_NUMBER() OVER (ORDER BY number) AS 缺失的订单号 from master.dbo.spt_values where type='P' and number<=200 ---这块设置你订单号的长度,一般订单都是日期+流水,所以我按照这个格式做 ) t where --↓↓↓↓↓↓↓↓↓↓这块是截取订单后面的流水的转成数字 RowNumber not in (select Convert(int,subString(订单号,7,3))QiHao from 订单表 ) ---这样就直接查询出订单流水中断的所有订单流水号了。
--参考下,看行不行? select distinct number from master..spt_values as s where not exists (select 订单号 from tb where 订单号=s.number) and number between (select min(订单号) from tb) and (select max(订单号) from tb) order by number
原始数据:
单号 订单名称
1 AB1
2 AC1
3 AD1
8 AF1
9 AR3
12 AT5需要结果获得单号最大值 之前所有没有出现的单号
要的结果:4、5、6、7、10、11
原始数据:
单号 订单名称
1 AB1
2 AC1
3 AD1
8 AF1
9 AR3
12 AT5需要结果获得单号最大值 之前所有没有出现的单号
要的结果:4、5、6、7、10、11
FROM 原始数据 T1
RIGHT JOIN master..spt_values T2 ON T1.单号=T2.number
WHERE T2.type='P'AND T2.number>0 AND T2.number<=200 AND T1.单号 IS NULL直接和数字表连接不就出来了吗
from master.dbo.spt_values
where
type='P' and
number<=200 ---这块设置你订单号的长度,一般订单都是日期+流水,所以我按照这个格式做
) t
where --↓↓↓↓↓↓↓↓↓↓这块是截取订单后面的流水的转成数字
RowNumber not in (select Convert(int,subString(订单号,7,3))QiHao from 订单表 )
---这样就直接查询出订单流水中断的所有订单流水号了。
where not exists
(select 订单号 from tb where 订单号=s.number)
and number between (select min(订单号) from tb) and (select max(订单号) from tb)
order by number