我有一个表定义和填充如下:
DECLARE @Temp TABLE
(
ProjectId INT,
EmployeeId INT,
SomeTypeId INT,
IsExpired BIT,
IsWarning BIT,
IsIncomplete BIT
)
--all incomplete...
INSERT INTO @Temp VALUES (1, 1, 1, 0, 0, 1)
INSERT INTO @Temp VALUES (1, 1, 2, 0, 0, 1)
INSERT INTO @Temp VALUES (1, 1, 3, 0, 0, 1)
--two warnings...
INSERT INTO @Temp VALUES (1, 2, 1, 0, 1, 0)
INSERT INTO @Temp VALUES (1, 2, 2, 0, 1, 0)
INSERT INTO @Temp VALUES (1, 2, 3, 0, 0, 0)
--two expirations...
INSERT INTO @Temp VALUES (1, 3, 1, 0, 0, 0)
INSERT INTO @Temp VALUES (1, 3, 2, 1, 0, 0)
INSERT INTO @Temp VALUES (1, 3, 3, 1, 0, 0)
我想返回不同的 ProjectId、EmployeeId 对以及任何警告或过期:
SELECT DISTINCT ProjectId, EmployeeId FROM @Temp WHERE IsWarning = 1 OR IsExpired = 1
没问题。
但是,我还想返回 ProjectId、EmployeeId 对,其中 IsWarning = 0 和 IsExpired = 0 和 IsIncomplete = 1,但这对于所有 SomeTypeId (1、2、3) 都必须是正确的。换句话说,没有警告,没有过期,只是所有类别都不完整。
SomeTypeId Fks 到查找表。目前只有 3 个条目,但将来可能会有更多条目。
有任何想法吗?
我希望返回 ProjectId, EmployeeId (1, 1)。