MS Access - 返回值由最大日期
我迷失在这一个,我是一个Access和SQL的新手,我已经搜索该网站和谷歌为这个答案。MS Access - 返回值由最大日期
我有一个包含3个列的表,其中包含ID到其他表,然后日期。
列1(角色ID)第2栏(ActionID)第3列(SettingID)柱4(日期)
我需要组由第1列和第2列(这样的这些独特的组合)。可能会有多个具有不同SettingID的实例,区分日期。
我认为总计选择查询完成这项工作,分组依据为Column1和2,然后使用Max作为日期列。但是我只是想要列3的值,而不是总数。
有没有简单的方法来做到这一点,我失踪了?
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
感谢您的快速回复juergen :)我使用的是Access 2007,当我尝试保存您的建议时,它说'FROM子句中的语法错误',然后突出显示JOIN。 – 2014-08-29 10:42:16
这是一个选择查询或是t2意味着正在创建一个表作为此sql的结果? – 2014-08-29 10:43:49
'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
谢谢你的帮助!似乎我需要学习更多的SQL理论,因为答案非常合理,我试图使用查询的设计模式构建它 - 我无法看到如何使用Access中的设计模式创建此查询。 – 2014-08-29 12:54:50