在一个大日志文件中,我有包含字段INVNO(发票号码)的记录。
最低和最高值很容易找到,但它看起来像一些
之间的数字不存在。
任何人都有一个SQL技巧,它可以告诉哪些数字在数字范围内丢失?使用SQL查找缺失的数字
-3
A
回答
0
请使用下表值函数,它有两个参数:最小和最大数, 并返回失踪数的列表, 假设你的表名是YOUR_TABLE并呼吁InvNo
create FUNCTION [dbo].[MissingInvoiceNumbers]
(
@minPaym bigint,
@MaxPaym bigint
)
RETURNS @tmp table(numbers bigint)
AS
BEGIN
declare @n bigint [email protected] bigint , @MaxPaym bigint,
declare @tmpAll table(Allnumbers bigint)
set @n= @minPaym
delete @tmp
delete @tmpAll
while (@n<[email protected])
begin
INSERT INTO @tmpAll
(AllNUMBERS)
VALUES (@n)
set @[email protected]+1
end
INSERT INTO @tmp
(numbers)
SELECT Allnumbers
FROM @tmpAll
where Allnumbers not in (select distinct convert(bigint,InvNo) as InvoiceNum from YOUR_TABLE where
InvNo <> '')
return
END
-1
刚刚加入本身的表...
DECLARE @tvp TABLE (INVNO INT)
INSERT INTO @tvp
VALUES (1),
(2),
(3),
(5),
(6),
(7),
(8),
(9),
(10),
(11)
SELECT *
FROM @tvp;
SELECT t.INVNO + 1
FROM @tvp t
LEFT OUTER JOIN @tvp x ON x.INVNO = t.INVNO + 1
WHERE ISNULL(x.INVNO, 0) = 0;
+1
没有桌子... –
+0
有一张桌子。 – PrivatePyle
0
对于Oracle这应该工作。对于任何其他数据库,您只需更改生成数字序列的方式即可。
with vals as (
select rownum r
from dual
connect by rownum between {min} and {max}
)
select *
from vals v
left join {sometable} s on s.{someid} = v.r
where s.{someid} is null
诀窍就是产生最小和最大值之间的数字,与发票连接表这个生成的序列,并筛选出相匹配的一切。
相关问题
- 1. 查找数组中缺失的数字
- 2. SQL查找缺失的日期范围
- 3. SQL查询找到缺失的角色
- 4. 在sql中查找缺失的行吗?
- 5. sql查找缺失的关联
- 6. 查找序列(SQL)缺失值
- 7. 查找“缺失”行
- 8. 使用SQL查找可用空缺
- 9. 使用awk查找行中的缺失字段
- 10. 查找数据中缺失的日期
- 11. 使用SQL查找数据库记录中的间隙(缺失记录)
- 12. 使用for循环查找数组中的缺失值
- 13. 如何在使用sqlserver的表中找到缺失的数字?
- 14. TSQL查找缺失值
- 15. 在大数据中查找缺失值
- 16. 如何使用php mysql查找序列(表)中的缺失值(数字)
- 17. 在Perl中查找列表中缺失的数字
- 18. Matlab - 查找列表中缺失的数字
- 19. 查找给定范围内的数字缺失
- 20. 在序列中查找缺失数字的逻辑是什么?
- 21. 缺失关键字SQL
- 22. 我可以使用SQL来查找下面给出的示例表中的缺失数字吗?
- 23. 寻找缺失的行T-SQL
- 24. 寻找缺失序列的SQL Server
- 25. 查找序列中缺少的数字
- 26. 在更改数字范围中查找缺失值
- 27. 查找重复,缺失号码,在整数数组缺失顺序
- 28. VBA查找丢失的文本字符串和计数缺失值
- 29. 在SQL Server中查找2个变量之间的缺失行
- 30. 如何在SQL中的组中按顺序查找缺失值?
您的列名可以尝试在Excel中执行此操作:http://www.extendoffice.com/documents/excel/1054-excel-identify-missing-numbers-sequence.html –
INVNO是整数吗? – jarlh
至少,编辑您的问题与样本数据和所需的结果。 –