2017-08-31 70 views
0

我正在嘗試放置一個報告,在那裏我需要列出狀態爲EXCLUDED的文檔。通常有幾個記錄具有相同的NF,但具有多個狀態。我需要考慮的是,如果某個NF的最後一個記錄與EXCLUDED不同,那麼總是某個NF的最後一個記錄具有EXCLUDED狀態,但它不應出現在我的報告中。通過過濾數據來安裝sql查詢

我有以下查詢:

SELECT id,nf,status,date FROM documents 

比如我有以下結果:

enter image description here

如何應該是:

enter image description here

可以

人幫我?

+0

你正在使用哪些DBMS?最有效的方法可能因數據庫供應商而異。另外要清楚的是,您是否在查找狀態爲「EXCLUDED」的每個「nf」的最新記錄,或者每個「nf」的最新記錄的狀態爲「EXCLUDED」?兩者之間有一個微妙但重要的區別。 – GarethD

回答

2

如果我正確地跟着你,你想這樣:

SELECT MAX(ID), NF, Status, MAX(DATE) 
FROM documents 
WHERE status = 'EXCLUDED' 
GROUP BY NF, Status 

這使得基於您的樣本數據的假設。如果DATEID並不總是按順序增加,它將不起作用。如果是這樣的話,還有其他方法可以做,但否則這是最簡單的。

1

也許是這樣的?

SELECT MAX(ID) AS ID, NF, STATUS, MAX(DATE) AS DATE 
FROM documents 
WHERE STATUS = 'EXCLUDED' 
GROUP BY NF, STATUS 

這會給你:

Result

+1

這將返回不在預期結果中的'5,3,EXCLUDED'行 –

+0

您是對的。看着桌子時我錯過了那條線。 – ikaikastine