【发布时间】:2018-05-17 06:44:35
【问题描述】:
我有一个通过此查询返回以下内容的表:
SELECT *
FROM [PROC_MN]
where PO_NO='GV17885' AND DOC_NO='622843'
ID PO_NO DOC_NO PROCESS_SEQ PROCESS_NAME STATUS TIME
756 GV17885 622843 2 R.M.Requisition Start 23-04-18 15:29
788 GV17885 622843 2 R.M.Requisition Finish 23-04-18 15:50
289 GV17885 622843 1 CTP Start 23-04-18 8:57
426 GV17885 622843 1 CTP Finish 23-04-18 10:09
901 GV17885 622843 3 Material Cut Start 23-04-18 17:23
903 GV17885 622843 3 Material Cut Finish 23-04-18 17:26
1669 GV17885 622843 4 Print Start 24-04-18 13:59
1712 GV17885 622843 4 Print Finish 24-04-18 14:44
3421 GV17885 622843 5 Q.C Start 27-04-18 8:04
3492 GV17885 622843 5 Q.C Finish 27-04-18 8:42
3630 GV17885 622843 7 RFID Start 27-04-18 9:36
3632 GV17885 622843 7 RFID Finish 27-04-18 9:38
4264 GV17885 622843 8 Q.C Start 27-04-18 14:58
4288 GV17885 622843 8 Q.C Finish 27-04-18 15:16
4729 GV17885 622843 9 Encode Start 28-04-18 8:48
4734 GV17885 622843 9 Encode Finish 28-04-18 8:49
4698 GV17885 622843 9 Encode Start 28-04-18 8:24
4722 GV17885 622843 9 Encode Finish 28-04-18 8:47
5016 GV17885 622843 10 Q.C Start 28-04-18 13:38
5073 GV17885 622843 10 Q.C Finish 28-04-18 14:11
我想找到丢失的 PROCESS_SEQ 行,通过上面的结果我们发现丢失的 PROCESS_SEQ 是数字 6 。我使用以下查询,但它什么也不返回/。请帮忙!
SET NOCOUNT ON;
DECLARE @Min BIGINT
DECLARE @Max BIGINT
DECLARE @i BIGINT
IF OBJECT_ID('tempdb..#TempTable') 不为空 开始 删除表#TempTable 结束
CREATE TABLE #TempTable
(
TempOrderNumber BIGINT
)
SELECT @Min = ( SELECT MIN([PROCESS_SEQ])
FROM [PROC_MN] WITH ( NOLOCK )
WHERE PO_NO='GV17885' AND [DOC_NO]='622843')
SELECT @Max = ( SELECT MAX([PROCESS_SEQ])
FROM [PROC_MN] WITH ( NOLOCK )
WHERE PO_NO='GV17885' AND [DOC_NO]='622843')
SELECT @i = @Min
WHILE @i <= @Max
BEGIN
INSERT INTO #TempTable
SELECT @i
SELECT @i = @i + 1
END
SELECT TempOrderNumber
FROM #TempTable
LEFT JOIN [PROC_MN] o WITH ( NOLOCK ) ON tempordernumber = o.[PROCESS_SEQ]
WHERE o.[PROCESS_SEQ] IS NULL
【问题讨论】:
-
您需要一次丢失所有的数字吗?还是只是第一个?
-
我需要 PO_NO= 中所有缺失的序列号吗? AND [DOC_NO]=?
标签: sql-server-2008