1
在我們的SQL Server 2008數據庫中,「Jobs」表之間存在一對多關係和「歷史」表。每次作業狀態發生變化時,我們都會將狀態,日期時間和作業ID記錄到歷史記錄表格中。如何篩選具有特定狀態的項目的歷史記錄表,但如果項目還具有其他特定狀態,則排除該項目
我需要獲取所有工作ID的歷史狀態=「已發佈」,除非工作歷史還具有狀態=「已撤銷」。
如果一個作業的歷史有一個狀態=「撤銷」,但隨後在日後有一個狀態=「發佈」,它必須包含在結果中。
所以基於以下模擬表中,而上述規則,應返回的結果是FK_JobID的2和3
DECLARE @History TABLE
(
HistoryID INT IDENTITY(1,1),
MaterStatus VARCHAR(300),
Updated DATETIME,
FK_JobID INT
)
INSERT INTO @History
VALUES ('Issued','2015-09-09',1),
('Revoked','2015-09-09',1),
('Issued','2015-09-09',2),
('Archived','2015-09-09',2),
('Issued','2015-09-09',3),
('Revoked','2015-09-09',3),
('Issued','2015-09-10',3),
('other','2015-09-09',4);
我怎樣寫這個查詢做到這一點?
謝謝親切 –