我正在尝试根据 MS Access 中的 ID 和日期从记录计数双倍中选择查询。
我想将其保留为单个查询。
这个应用的可能性有哪些?或者其他方法
请指导我
谢谢
桌子
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 | 出 |
5010 | 24 年 4 月 29 日 | 08:00 | 在 |
桌子
MASTERID
身份证 | 名称ID | 位置ID |
---|---|---|
5008 | A | 工作人员 |
5009 | B | 工作人员 |
5010 | C | 工作人员 |
我使用了下面的sql代码,但没有产生任何结果
SELECT ABSEN.ID, MASTERID.NAMEID AS NAMEID, ABSEN.DATE, MASTERID.POSITIONID AS POSITIONID, ABSEN.TIME, ABSEN.INOUT, Count(*) AS Expr1
FROM ABSEN INNER JOIN MASTERID ON ABSEN.ID = MASTERID.ID
GROUP BY ABSEN.ID, MASTERID.NAMEID, ABSEN.DATE, MASTERID.POSITIONID, ABSEN.TIME, ABSEN.INOUT,ABSEN.DATE
HAVING (((Count(*))>1));
所需输出
身份证 | 名称ID | 日期 | 时间 | 输入输出 |
---|---|---|---|---|
5008 | A | 24 年 4 月 28 日 | 08:00 | 在 |
5008 | A | 24 年 4 月 28 日 | 17:00 | 出 |
5009 | B | 24 年 4 月 29 日 | 08:00 | 在 |
5009 | B | 24 年 4 月 29 日 | 17:00 | 出 |
你想要一个单一的查询是多么棘手......注意你的要求,因为这是不可能做到的(没有子查询)。
顺便说一句,我猜你想要 INOUT 有 OUT 的 ID。然后按 ID 和 TIME 排序。
select a.ID ,a.NAMEID ,a.DATE ,a.TIME ,a.INOUT
from ABSEN a INNER JOIN MASTERID ON ABSEN.ID = MASTERID.ID
where exists(select 1 from ABSEN a2 where a.ID=a2.ID and a2.INOUT='OUT')
order by ID, TIME