2015-01-15 66 views
1

的Microsoft Access 2010選擇最大接入查詢 - 行最大的列與WHERE條件

我試圖獲取訪問次數小於或等於分開13個月序列內的用戶的最大數量的訪問。 因此,最後一次訪問是在一系列訪問中,間隔小於或等於13個月。我要排除那些誰只是偶爾使用它(即在相隔13個月。)

我用它來運行我的查詢:

SELECT ID, AppointmentDate, Visit 
FROM tblVisitQuestions t1 
WHERE t1.Visit = 
    (SELECT Max(t2.Visit) 
    FROM tblVisitQuestions t2 
    WHERE t2.ID=t1.ID AND (DateDiff("m",[t1].[AppointmentDate],[t2].[AppointmentDate]) <= 13) 
    GROUP BY t2.ID) 

它的不同之處在於它的返回多個值相同的工作身份證號。 不知道是否在我的數據或我的查詢中出現錯誤。

例如:在表示例數據

CR AppointmentDate Visit 
1 15-Apr-05  0 
1 15-Jul-05  1 
1 16-May-06  2 
1 06-Jun-06  3 
1 19-Dec-06  4 
1 11-Nov-11  5 
1 31-Jan-12  6 
2 08-Jun-04  0 
2 17-Dec-04  1 
2 05-Jul-05  2 
2 06-Dec-05  3 
2 06-Feb-09  4 
2 19-Apr-11  5 

什麼,我會查詢(不是我現在越來越)

CR AppointmentDate Visit 
1 19-Dec-06  4 
2 06-Dec-05  3 

什麼,我卻越來越喜歡後:

CR AppointmentDate Visit 
1 19-Dec-06  4 
1 31-Jan-12  6 
2 06-Feb-09  4 
2 19-Apr-11  5 

我需要一種方法來選擇我得到的最大值的最小值

任何幫助將不勝感激! 感謝

+0

你能告訴我們你*得到了什麼嗎? – 2015-01-15 17:41:27

+0

只是希望增加一些更好的例子 – VT555 2015-01-15 19:50:47

回答

0

對於每個瀏覽者,您可以通過執行獲得13個月的最大訪問數算賬:

SELECT ID, AppointmentDate, Visit, 
     (SELECT Max(t2.Visit) 
     FROM tblVisitQuestions as t2 
     WHERE t2.ID = t1.ID AND (DateDiff("m",[t1].[AppointmentDate],[t2].[AppointmentDate]) <= 13) 
     ) as MaxVisit 
FROM tblVisitQuestions as t1; 

如果你想這隻有在訪問數量爲一個,然後添加一個WHERE子句:

WHERE t1.Visit = 1; 
+0

謝謝。有沒有辦法可以選擇MaxVisit的Min值? 我可以使用MaxVisit上的「Select Min」嗎? – VT555 2015-01-15 19:51:07

+0

像在查詢原始查詢中的子查詢一樣,還是應該在兩個單獨的查詢中執行此操作? – VT555 2015-01-15 20:02:26

+0

@維多利亞。 。 。您始終可以使用子查詢。 – 2015-01-16 22:06:04