![](/img/trans.png)
[英]SELECT Row Values WHERE MAX() is Column Value In GROUP BY Query
[英]Select Max Access Query - row max for column with WHERE criteria
Microsoft Access 2010
我正在尝试在相距少于或等于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)
除了返回相同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
我需要一种方法来选择要获取的最大值的最小值
任何帮助将不胜感激! 谢谢
对于每次访问,您都可以通过以下操作获得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;
如果仅在访问次数为1的情况下才需要这样做,则添加一个where子句:
WHERE t1.Visit = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.