如何在 MS Access 中使用自定义列(选项)从记录数超过 2 的记录中选择查询

问题描述 投票:0回答:1

我正在尝试根据 MS Access 中的 ID、日期和选项从行数超过 2 的行中选择查询。

所以在选项列中使用“NO”那么超过2条的记录不会包含在我的sql查询代码中

我的 SQL 代码有问题吗?

所以我的帖子与下面的链接不同

链接

请指导我

桌子

Absen

身份证 日期 时间 输入输出 选项
5008 24 年 4 月 28 日 08:00
5008 24 年 4 月 28 日 17:00
5009 24 年 4 月 29 日 08:00
5009 24 年 4 月 29 日 17:00
5009 24 年 4 月 29 日 17:00
5010 24 年 4 月 28 日 08:00
5011 24 年 4 月 30 日 08:00
5011 24 年 4 月 30 日 08:00
5011 24 年 4 月 30 日 17:00

桌子

MASTERID

身份证 名称ID 位置ID
5008 A 工作人员
5009 B 工作人员
5010 C 工作人员
5011 D 工作人员

我使用了这样的 SQL 代码结果:

SELECT a.ID, MASTERID.NAMEID, a.DATE, a.TIME, a.INOUT
FROM ABSEN AS a INNER JOIN MASTERID ON a.ID = MASTERID.ID
WHERE a.option is null and exists(select a.ID from ABSEN a2 where a.ID=a2.ID and a.DATE=a2.DATE group by a.ID and a.DATE and a.option having count(*) > 2)
ORDER BY a.ID, a.DATE, a.INOUT;

代码结果

身份证 名称ID 日期 时间 输入输出
5009 B 24 年 4 月 29 日 08:00
5009 B 24 年 4 月 29 日 17:00
5011 D 24 年 4 月 30 日 08:00
5011 D 24 年 4 月 30 日 08:00
5011 D 24 年 4 月 30 日 17:00

想要的结果

身份证 名称ID 日期 时间 输入输出
5011 D 24 年 4 月 30 日 08:00
5011 D 24 年 4 月 30 日 08:00
5011 D 24 年 4 月 30 日 17:00
sql ms-access sql-order-by exists
1个回答
0
投票

使用 2 个嵌套查询和 IN() 函数:

SELECT a.ID, m.NAMEID, a.DATE, a.TIME, a.INOUT
FROM ABSEN AS a INNER JOIN MASTERID AS m ON a.ID = m.ID
WHERE a.ID NOT IN(select ID from ABSEN WHERE Option="NO")
AND a.ID IN(SELECT ID FROM ABSEN GROUP BY ID HAVING Count(*)>2)
ORDER BY a.ID, a.DATE, a.INOUT;
© www.soinside.com 2019 - 2024. All rights reserved.