我們有一個客戶數據庫,我試圖讓所有在三週或更長時間內沒有對他們發表評論的客戶文件。返回至少X天無記錄的文件
我正在用兩張桌子;帶有關於文件信息的文件表(如分配給哪個工作人員的文件)以及數據庫中所有註釋均在其中的註釋表。它們通過文件編號字段鏈接。
如果我想要最後一個音符的文件號和日期,我應該使用什麼SQL?
我曾嘗試:
SELECT db_file_notes.file_num, Last(db_file_notes.file_date) AS
LastOfnote_date, Last(db_file_notes.note_key) AS LastOfnote_key
FROM db_file_notes
GROUP BY db_file_notes.file_num
ORDER BY db_file_notes.file_num, Last(db_file_notes.note_date);
但是也有一些在得到的查詢不應該是文件的屈指可數。例如,文件#212720的最後一個註釋是在7/28,但上面的查詢返回最後一個註釋日期6/26(前一個註釋)。然後是文件#212781和7/21上的實際最後一個註釋,但是查詢返回6/12(自查詢返回的那個之後有5個更新的註釋)。
在上述SQL中沒有日期標準,但如果我添加< = Date() - 21,它仍然不正確(212710仍然存在,最後一個註釋爲6/26)。有趣的是,如果我在文件編號上添加過濾器以僅返回單個文件編號,如212720,則最後一個記錄日期將正確返回。
我試過按文件編號排序,然後記錄日期,文件編號和音符鍵(一般假設新音符具有更高的鍵值)並獲得相同的行爲。而不是排序上升然後採取最後一個記錄,我試着排序下降,並採取第一;這會返回受上述影響的文件的正確註釋,但是新案例現在有問題,但現在正好相反。
嘗試使用'Max()'而不是'Last()'。你會得到預期的結果嗎? – Parfait
使用'MAX'作爲@Parfait表示,或者用'file_date'和'SELECT TOP 1'排序...... _EDIT:_類似的劃痕,因爲它不回答問題,但返回最高的file_date。 –
工作正常!非常感謝,自從週五以來,我已經用了14個小時。如果你不介意,Max()和Last()之間有什麼區別? –