繁体   English   中英

选择最大访问查询-具有WHERE条件的列的最大行数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM