MS Access - 按最大日期返回值

时间:2014-08-29 10:09:33

标签: sql ms-access

我迷失在这一点上,我有点像Access和SQL的新手,我已经搜索过该网站和谷歌寻找答案。

我有一个包含3列的表,其中包含其他表的ID,然后是日期。

第1列(RoleID)第2列(ActionID)第3列(SettingID)第4列(日期)

我需要按照第1列和第2列进行分组(因此这些的唯一组合)。可能有多个具有不同SettingID的实例,按日期区分。

我认为Totals select查询可以完成这项工作,Group by为Column1和2,然后使用Max作为日期列。但是我只想要第3列的值,而不是总数。

是否有一种简单的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

select roleid, actionid, settingid
from your_table t1
inner join
(
   select roleid, actionid, max(date) as mdate
   from your_table
   group by roleid, actionid
) t2 on t1.roleid = t2.roleid 
    and t1.actionid = t2.actionid
    and t1.date = t2.mdate

答案 1 :(得分:0)

如果这是一个非常旧版本的Access,那么它将不会很好地支持子查询

您可以通过创建单独的查询来解决此问题

select roleid, actionid, max(date) as mdate
from your_table
group by roleid, actionid

将其另存为MaxDateQuery或类似的东西

然后,您可以在后续查询中使用该已保存的Access查询来获取您想要的内容

select 
your_table.roleid, 
your_table.actionid, 
your_table.settingid
from your_table
inner join MaxDateQuery 
on  your_table.roleid   = MaxDateQuery.roleid 
and your_table.actionid = MaxDateQuery.actionid
and your_table.date     = MaxDateQuery.mdate