我有一个 sql 查询,其中我有一个以attan
考勤命名的表和一个名为列的列
S_TIME
,我在其中存储了 time 和 out time,并设置了 in withI
和 forO
现在,我正在尝试使用标志来赶上和下班。我写了一个查询,但是这个查询的结果有一些错误的意义。
这是我的查询
SELECT X.AC_NO, X.IN_TIME, Y.OUT_TIME, X.S_DTE, X.CHK_IN, Y.CHK_OUT
FROM (SELECT A.AC_NO, A.S_TIME IN_TIME, A.AC_CHECKTYPE CHK_IN, A.S_DTE
FROM ATTN A
WHERE A.AC_CHECKTYPE = 'I' AND A.S_DTE = :P_DTE) X,
(SELECT B.AC_NO, B.S_TIME OUT_TIME, B.AC_CHECKTYPE CHK_OUT
FROM ATTN B
WHERE B.AC_CHECKTYPE = 'O' AND B.S_DTE = :P_DTE) Y
WHERE X.AC_NO = Y.AC_NO(+)
通过这个查询,我总是得到员工的记录数,并且只有 2 个没有时间的记录。
而在表中,有 234 名员工加入,256 名退出,但结果与数据不符。
如果我的查询中有任何问题,请任何人帮助我。