我有一個表定義並填充爲真如下: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