2012-05-25 215 views
0

以下查詢返回AcquisitionDate在RequestDate的60天內的請求數以及其他各列。使用MS Access COUNT DISTINCT函數

如何在RequestDate的60天內修改代碼以統計唯一 AcquisitionDates的數量?我試圖使用COUNT DISTINCT,但無法弄清楚在這種情況下應該如何使用它。

SELECT SceneTable.PATH, SceneTable.ROW, SceneTable.ROW, SceneTable.UlLat, 
     SceneTable.UlLon, SceneTable.UrLat, SceneTable.UrLon, SceneTable.LlLat, 
     SceneTable.LlLon, SceneTable.LrLat, SceneTable.LrLon, 
     Sum(Iif((DateDiff("d",[AcquisitionDate],[RequestDate])<60),1,0)) AS Expr1, 
     Count(RequestTable.RequestID) AS CountOfRequestID 
FROM ((SceneTable INNER JOIN 
     SceneAcquisitionTable 
      ON SceneTable.SceneID = SceneAcquisitionTable.SceneID) INNER JOIN 
     UserSceneAcquisitionTable 
      ON SceneAcquisitionTable.SceneAcquisitionID = 
       UserSceneAcquisitionTable.SceneAcquisitionID) INNER JOIN 
     RequestTable 
      ON UserSceneAcquisitionTable.UserSceneAcquisitionID = 
       RequestTable.UserSceneAcquisitionID 
GROUP BY SceneTable.PATH, SceneTable.ROW, SceneTable.UlLat, SceneTable.UlLon, 
     SceneTable.UrLat, SceneTable.UrLon, SceneTable.LlLat, SceneTable.LlLon, 
     SceneTable.LrLat, SceneTable.LrLon 

下面是示例表以及預期結果: Here are sample tables as well as expected results:

+1

哪個表保存AquisitionDate DISTINCT一種通用的方式?你需要包含一個派生表或子查詢'從sometable'中選擇不同的獲取日期並計算它。這可能稍微複雜一些,但這是總體思路。 – Fionnuala

+0

@Remou SceneAcquisitionTable持有AcquisitionDate。我曾嘗試在此之後,FROM語句和訪問抱怨語法錯誤: 'AS一 RIGHT JOIN(SELECT DISTINCT AcquisitionDate FROM SceneAcquisitionTable) 爲B ON A.AcquisitionDate = B.AcquisitionDate' –

+1

這可能與您的幫助計數,即使你讓它工作,因爲你會再次結束重複。你想如何計算日期?對於分組中的每個項目?因爲這將導致更復雜的子查詢或派生表。最簡單的選擇可能是發佈一些樣本數據和預期結果。 – Fionnuala

回答