【发布时间】:2020-08-31 11:30:45
【问题描述】:
关于本帖及回复:https://stackoverflow.com/a/1389653/9343200
我要做的是在表 Paragony 中查找缺失的 ID,然后我必须再检查一列:par_nrkasy,如果它是 =1 或 =2。
我正在尝试再添加一个条件WHERE par_nrkasy = ,但我不知道如何添加到这个查询中,我的意思是,让它工作并保持主代码的含义。
我的代码:
;WITH Missing (missnum, maxid) AS
(
SELECT
1 AS missnum,
(SELECT MAX(par_numerf)
FROM Paragony)
UNION ALL
SELECT missnum + 1, maxid
FROM Missing
WHERE missnum < maxid
)
SELECT missnum
FROM Missing
LEFT OUTER JOIN Paragony tt ON tt.par_numerf = Missing.missnum
WHERE tt.par_numerf is NULL
OPTION (MAXRECURSION 0);
有什么想法吗?我尝试过的任何东西都会得到错误的结果,例如重复或根本没有结果
或者我可以通过这段代码使用它,但问题是如何添加子句
SELECT DISTINCT par_numerf + 1
FROM Paragony
WHERE par_numerf + 1 NOT IN (SELECT DISTINCT par_numerf FROM Paragony);
【问题讨论】:
-
请在您的问题中提供样本数据和期望的结果。它应该独立存在,无需通过链接引用。只是要明确一点:在您的问题或您所指的问题中都没有
par_nrkasy,所以您想做的就是莫名其妙。 -
Tally 表解决方案在 Stack Overflow 上不受欢迎,但这就是它所需要的。
-
在开始编写代码之前,最简单的事情就是搜索互联网。您需要从 1 到由查询确定的某个上限的数字顺序列表吗?很好 - 搜索numbers table。
-
接下来,学会提出聪明的问题。诸如“不起作用”和“错误结果”之类的短语对除您之外的任何人都没有意义。您的源数据的实际示例以及您希望从基于您的示例的查询中得到什么有助于其他人了解您的目标。
-
谢谢,基本上我正在做的事情是在 DB“缺失”ID 中找到,如下所示:imgur.com/U944wBB,但问题是我必须添加额外的包含条件来检查另一列 par_nrkasy 如果它是 1或 2,因为在 1 上此字段中没有缺少 id,但在 2 上是
标签: sql-server conditional-statements common-table-expression