我迷失在这一点上,我有点像Access和SQL的新手,我已经搜索过该网站和谷歌寻找答案。
我有一个包含3列的表,其中包含其他表的ID,然后是日期。
第1列(RoleID)第2列(ActionID)第3列(SettingID)第4列(日期)
我需要按照第1列和第2列进行分组(因此这些的唯一组合)。可能有多个具有不同SettingID的实例,按日期区分。
我认为Totals select查询可以完成这项工作,Group by为Column1和2,然后使用Max作为日期列。但是我只想要第3列的值,而不是总数。
是否有一种简单的方法可以解决这个问题?
答案 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