MS Access - 返回值由最大日期

MS Access - 返回值由最大日期

问题描述:

我迷失在这一个,我是一个Access和SQL的新手,我已经搜索该网站和谷歌为这个答案。MS Access - 返回值由最大日期

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

列1(角色ID)第2栏(ActionID)第3列(SettingID)柱4(日期)

我需要组由第1列和第2列(这样的这些独特的组合)。可能会有多个具有不同SettingID的实例,区分日期。

我认为总计选择查询完成这项工作,分组依据为Column1和2,然后使用Max作为日期列。但是我只是想要列3的值,而不是总数。

有没有简单的方法来做到这一点,我失踪了?

+0

谢谢你的帮助!似乎我需要学习更多的SQL理论,因为答案非常合理,我试图使用查询的设计模式构建它 - 我无法看到如何使用Access中的设计模式创建此查询。 – 2014-08-29 12:54:50

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 
+0

感谢您的快速回复juergen :)我使用的是Access 2007,当我尝试保存您的建议时,它说'FROM子句中的语法错误',然后突出显示JOIN。 – 2014-08-29 10:42:16

+0

这是一个选择查询或是t2意味着正在创建一个表作为此sql的结果? – 2014-08-29 10:43:49

+0

't2'是子查询的别名。 – 2014-08-29 11:15:42

如果这是真的老版本的Access的话,就不会支持子查询很好

您可以通过创建一个单独的查询

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

保存为MaxDateQuery工作,这轮或类似的东西

然后,您可以在后续查询中使用该保存的访问查询来获得你想要的东西

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