我对 SQL Server 后端进行了以下查询
SELECT TOP(1) (v.rownum + 99)
FROM
(
SELECT incrementNo-99 as id, ROW_NUMBER() OVER (ORDER BY incrementNo) as rownum
FROM proposals
WHERE [year] = '12'
) as v
WHERE v.rownum <> v.id
ORDER BY v.rownum
找到第一个未使用的提案编号。(这不是关于lastrecord +1)
但我意识到ROW_NUMBER
不支持访问。我看了看,我找不到类似的东西。
有谁知道如何获得与ROW_NUMBER
访问相同的结果?
也许有更好的方法来做到这一点。
实际上人们在没有约束的情况下插入他们的提案 No (incrementID)。这个数字看起来像这样 13-152。xx- 代表当年,-xxx 是提案编号。最后 3 位数字应该是递增的,但在某些情况下,一年可能有 10 次,他们必须跳过一些数字。这就是为什么我不能拥有自动增量。
所以我做了这个查询,所以当他们打开表单时,默认数字是第一个未使用的。
这个怎么运作:
因为数字从 100 开始,所以我输入 -99,所以它从 1 开始。
然后我将行号与 id 进行比较,所以它看起来像这样
ROW NUMBER | ID
1 1 (100)
2 2 (101)
3 3 (102)
4 5 (104)<--------- WRONG
5 6 (105)
所以现在我知道我们跳过了 4。所以我返回 (4 - 99) = 103
如果有更好的方法,我不介意改变,但我真的很喜欢这个查询。
如果真的没有其他方法并且我无法在访问中模拟行号,我将使用直通查询。
谢谢