次のようにテーブルを定義して入力しました。
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
問題ない。
ただし、IsWarning = 0、IsExpired = 0、IsIncomplete = 1 の ProjectId と EmployeeId のペアも返したいのですが、これはすべての SomeTypeId (1、2、3) に当てはまる必要があります。つまり、警告も有効期限もありません。すべてのカテゴリが不完全です。
SomeTypeId はルックアップ テーブルに Fks します。現在は3名のみですが、今後増える可能性があります。
何か案は?
ProjectId, EmployeeId (1, 1) が返されると思います。