我有一个表名“Numerator”有 3 列:No_Fact、Numerat 和 Date。像这样:
No_Fact Numerat Date
1207020015 000713 2012-07-02 00:00:00.000
1207020016 000720 2012-07-02 00:00:00.000
1207020017 000722 2012-07-02 00:00:00.000
1207020019 000723 2012-07-02 00:00:00.000
1207020022 000724 2012-07-02 00:00:00.000
1207020021 000733 2012-07-02 00:00:00.000
1207020020 000734 2012-07-02 00:00:00.000
1207020018 000735 2012-07-02 00:00:00.000
1208120001 000766 2012-08-12 00:00:00.000
1208120002 000769 2012-08-12 00:00:00.000
1208230001 000777 2012-08-23 00:00:00.000
1208230002 000780 2012-08-23 00:00:00.000
我想查看 Numerat 列中数字之间的一些缺失数字,所以我尝试使用以下代码:
SELECT A.Numerat+1 AS 'MISSING FROM', MIN(B.Numerat)-1 AS 'TO'
FROM Numerator A, Numerator B
WHERE A.Numerat < B.Numerat
GROUP BY A.Numerat
HAVING A.Numerat+1 < MIN(B.Numerat)
ORDER BY 1
和结果集:
MISSING FROM TO
714 719
721 721
725 732
736 765
767 768
770 776
778 779
这是一个很好的代码。但是序号太多,不符合简洁的需要。所以我只想在今天(2012-08-23)显示部分行,喜欢这样:
MISSING FROM TO
778 779
我非常感谢任何可以解码它的人,谢谢。
当我在表格中插入的下一行从 2012 年 8 月 23 日开始时,有一件有趣的事情:
No_Fact Numerat Date
1208230001 000777 2012-08-23 00:00:00.000
1208230002 000780 2012-08-23 00:00:00.000
1208250001 000782 2012-08-25 00:00:00.000
1208250002 000783 2012-08-25 00:00:00.000
1208250003 000784 2012-08-25 00:00:00.000
1208250004 000785 2012-08-25 00:00:00.000
1208250005 000786 2012-08-25 00:00:00.000
1208250006 000788 2012-08-25 00:00:00.000
1208250007 000789 2012-08-25 00:00:00.000
1208250008 000790 2012-08-25 00:00:00.000
1208250009 000793 2012-08-25 00:00:00.000
1208250010 000794 2012-08-25 00:00:00.000
作为我最初的目的,我想查看 Numerat 列中缺少的数字,总而言之,我只想显示我今天单独输入的一行,然后根据 bluefeet 的建议,我使用以下代码:
SELECT A.Numerat+1 AS 'MISSING FROM', MIN(B.Numerat)-1 AS 'TO'
FROM Numerator A
INNER JOIN Numerator B
ON A.Numerat < B.Numerat
AND a.Tanggal = DATEADD(DAY, DATEDIFF(DAY, 0, GetDate()), 0)
GROUP BY A.Numerat
HAVING A.Numerat+1 < MIN(B.Numerat)
ORDER BY 1
并取得成果:
MISSING FROM TO
787 787
791 792
如果我们仔细看有一个没有出现的缺失数字,那就是:
MISSING FROM TO
781 781
但我们不知道具体包括日期吗?是 23 还是 25。在这种情况下,确切地知道这个缺少的数字是在什么日期并不重要,显然缺少一个数字,应该注意,并且在所有公共假期的 24 日到期,让我们输入它25 日。任何人都可以帮忙吗?