我給兩個例子,第一個一個工程,第二個與我想做的事:SQL MAX最新與WHERE IN子句
SELECT P.ProjName, D.update_date, SUM(E.pass), SUM(E.fail)
FROM execution AS E INNER JOIN (
daily AS D INNER JOIN project AS P ON D.project_ID = P.ID)
ON E.daily_ID = D.ID
WHERE D.project_id = 25 AND D.update_date = (
SELECT MAX(update_date) FROM daily WHERE project_id = 25;)
GROUP BY P.ProjName, D.update_date;
這將單個項目的工作。它給了我一個特定項目(這裏是25)最近一天的通過和失敗的總數。我想使用WHERE IN子句獲取一組項目。例如(但不起作用):
SELECT P.ProjName, D.update_date, SUM(E.pass), SUM(E.fail)
FROM execution AS E INNER JOIN (
daily AS D INNER JOIN project AS P ON D.project_ID = P.ID)
ON E.daily_ID = D.ID
WHERE D.project_id IN (25,26,28,29,30,31)
GROUP BY P.ProjName, D.update_date
HAVING MAX(D.update_date);
這將導致每個日期被拉爲每個項目。有3個表格涉及'項目',它由'每日'鏈接,通過'執行'鏈接。所以,對於每個項目,都有多個日常數據,每天有多個執行數據。我意識到HAVING MAX可能需要比較,但是對於什麼?也許修改後的JOIN會有所幫助。
感謝, 基思
你使用MSSQL嗎? –
這是使用Excel VBA中的ADODB連接器(Jet 4)的MS Access數據庫。第一個答案,解決了它。感謝大家的幫助。 – dropper
另外一個注意事項。我需要將P.ID添加到SELECT和GROUP BY語句中以保持原始順序。 – dropper