2015-01-15 34 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