我有一个表定义并填充为真如下:SQL:选择其中一个条件是所有类型
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)
我想返回不同的专案编号,雇员对任何警告或到期日:
SELECT DISTINCT ProjectId, EmployeeId FROM @Temp WHERE IsWarning = 1 OR IsExpired = 1
没问题。
但是,我想还返回ProjectId,EmployeeId对,其中IsWarning = 0和IsExpired = 0和IsIncomplete = 1,但是对于所有SomeTypeId(1,2,3),这必须为true。换句话说,没有警告,没有到期,对于所有类别都只是不完整的。
SomeTypeId Fks到查找表。目前只有3个参赛作品,但未来可能会更多。
任何想法?
我希望返回ProjectId,EmployeeId(1,1)。
这对于'IsWarning = 0且IsExpired = 0且IsIncomplete = 1'的所有1,2,3 SomeTypeId'记录' – Kaf 2013-02-15 18:33:27
@Kaf Hm?我很可能误解了这个问题,但我看不出哪种情况不起作用。你能举个反例吗? – 2013-02-15 18:35:13
很好的解决方案。谢谢。 – 2013-02-15 18:36:53