我正在嘗試放置一個報告,在那裏我需要列出狀態爲EXCLUDED的文檔。通常有幾個記錄具有相同的NF,但具有多個狀態。我需要考慮的是,如果某個NF的最後一個記錄與EXCLUDED不同,那麼總是某個NF的最後一個記錄具有EXCLUDED狀態,但它不應出現在我的報告中。通過過濾數據來安裝sql查詢
我有以下查詢:
SELECT id,nf,status,date FROM documents
比如我有以下結果:
如何應該是:
可以人幫我?
我正在嘗試放置一個報告,在那裏我需要列出狀態爲EXCLUDED的文檔。通常有幾個記錄具有相同的NF,但具有多個狀態。我需要考慮的是,如果某個NF的最後一個記錄與EXCLUDED不同,那麼總是某個NF的最後一個記錄具有EXCLUDED狀態,但它不應出現在我的報告中。通過過濾數據來安裝sql查詢
我有以下查詢:
SELECT id,nf,status,date FROM documents
比如我有以下結果:
如何應該是:
可以人幫我?
如果我正確地跟着你,你想這樣:
SELECT MAX(ID), NF, Status, MAX(DATE)
FROM documents
WHERE status = 'EXCLUDED'
GROUP BY NF, Status
這使得基於您的樣本數據的假設。如果DATE
或ID
並不總是按順序增加,它將不起作用。如果是這樣的話,還有其他方法可以做,但否則這是最簡單的。
也許是這樣的?
SELECT MAX(ID) AS ID, NF, STATUS, MAX(DATE) AS DATE
FROM documents
WHERE STATUS = 'EXCLUDED'
GROUP BY NF, STATUS
這會給你:
這將返回不在預期結果中的'5,3,EXCLUDED'行 –
您是對的。看着桌子時我錯過了那條線。 – ikaikastine
你正在使用哪些DBMS?最有效的方法可能因數據庫供應商而異。另外要清楚的是,您是否在查找狀態爲「EXCLUDED」的每個「nf」的最新記錄,或者每個「nf」的最新記錄的狀態爲「EXCLUDED」?兩者之間有一個微妙但重要的區別。 – GarethD