Tsql 如何查找哪些行不';t至少有一列标记为true,由另一列分组

Tsql 如何查找哪些行不';t至少有一列标记为true,由另一列分组,tsql,Tsql,我有一个表,用于跟踪Bin数据库的零件号信息。每个料仓可以有多个零件号,但必须至少将一个零件号标记为该料仓的主零件号。在我的PartNumber表中,有许多记录从未被识别为主要记录,我需要能够识别它们,以便在能够强制执行业务规则之前能够清除数据。我已经查看了OVER(PARTION BY),但我不知道如何只获取那些没有至少一个PartNumber标记为primary的记录 表结构: PartNumbnerID PK int(IDENTITY) PartNumber varchar(20) Bin

我有一个表,用于跟踪Bin数据库的零件号信息。每个料仓可以有多个零件号,但必须至少将一个零件号标记为该料仓的主零件号。在我的PartNumber表中,有许多记录从未被识别为主要记录,我需要能够识别它们,以便在能够强制执行业务规则之前能够清除数据。我已经查看了OVER(PARTION BY),但我不知道如何只获取那些没有至少一个PartNumber标记为primary的记录

表结构:

PartNumbnerID PK int(IDENTITY)
PartNumber varchar(20)
BinNumber char(5) FK 
BinPrimary bit 
样本数据:

PartNumberID  PartNumber    BinNumber    BinPrimary

1             123           22222          0
2             345           22222          0
3             456           33333          0
4             678           33333          0
5             789           44444          1
6             890           44444          0
查询结果如下:

BinNumber
 22222
 33333
简单到:

select BinNumber
from MyTable
group by BinNumber
having max([Primary]) = 0
这里有一个SQLFIDLE:

它非常简单:

select BinNumber
from MyTable
group by BinNumber
having max([Primary]) = 0

这里有一个SqlFiddle:

当您需要更多列时,这可能是一个优势,但是如果您只需要Binnumber,那么应该使用Wolf的解决方案

SELECT PartNumberID,PartNumber,BinNumber,Primary FROM 
(
SELECT 
PartNumberID,PartNumber,BinNumber,Primary,
max(primary) over(partition by BinNumber) chk
FROM table
) a
WHERE chk = 0

当您需要更多列时,这可能是一个优势,但是如果您只需要Binnumber,则应该使用Wolf的解决方案

SELECT PartNumberID,PartNumber,BinNumber,Primary FROM 
(
SELECT 
PartNumberID,PartNumber,BinNumber,Primary,
max(primary) over(partition by BinNumber) chk
FROM table
) a
WHERE chk = 0

“操作数数据类型位对于max运算符无效”是一个错误。忘记添加“与”,我在尝试代码时遇到上述错误。@AlanFisher right,对此表示抱歉;SQLFiddle默认设置了字段
int
,我对此没有给予足够的注意。我得到了错误“操作数数据类型位对于max运算符无效”。忘记添加符号,我在尝试代码时遇到了上面的错误。@AlanFisher是的,对此表示抱歉;SQLFiddle默认设置了
int
字段,我对此没有给予足够的注意。好的,我必须将BinPrimary转换为int,两种解决方案都有效。谢谢。作为旁注,此解决方案将返回没有BinPrimary的每一行,而w9lf的解决方案将只返回没有BinPrimary的BinNumber。好的,我必须将BinPrimary转换为int,两个解决方案都有效。谢谢。作为旁注,此解决方案将返回没有BinPrimary的每一行,而w9lf的解决方案将只返回没有BinPrimary的BinNumber。