Sql server SQL Server:只返回从未在多行中满足给定条件的行

Sql server SQL Server:只返回从未在多行中满足给定条件的行,sql-server,Sql Server,为这个模糊的标题道歉,这一个很难用一句话来量化 例如:我们有一个用于版本控制缺陷的非常基本的SQL表。表中的每一行都是缺陷的修订版。一个缺陷可能有多个修订 列为:缺陷ID、修订、概要、测试 我只想选择在任何修订版中从未测试过值为1的缺陷 我大致了解到这可能涉及游标或嵌套的select语句,但老实说,我不知道如何实现这一点 select DefectId, sum(Tested) from table group by DefectId having sum(tested) = 0 干杯——简单

为这个模糊的标题道歉,这一个很难用一句话来量化

例如:我们有一个用于版本控制缺陷的非常基本的SQL表。表中的每一行都是缺陷的修订版。一个缺陷可能有多个修订

列为:缺陷ID、修订、概要、测试

我只想选择在任何修订版中从未测试过值为1的缺陷

我大致了解到这可能涉及游标或嵌套的select语句,但老实说,我不知道如何实现这一点

select DefectId, sum(Tested)
from table
group by DefectId
having sum(tested) = 0
干杯——

简单的英语回答:“让我看看所有的缺陷ID,除了那些曾经测试过的”

select DefectId
from table
where DefectId not in (select DefectId
                       from table
                       where Tested = 1)

对于优雅的解决方案。如果测试的
不是数字或包含0或1以外的值怎么办?即使现在不是这样,将来也可能使用-1来表示不稳定的东西。如果以后将与原始问题无关的数据添加到表中,则查询可能会中断。对不表示数量的()列求和是一种不好的做法。我假设这是一种位数据类型。那只会是0或1。我也不同意对非金额求和是一种不好的做法;通常这样做没有任何意义,但在本例中并非如此。您不能
SUM()
a
bit
datatype。
SELECT DefectID FROM Defects
EXCEPT
SELECT DefectID FROM Defects WHERE Tested = 1