【发布时间】:2017-01-04 13:51:17
【问题描述】:
我试图通过以更易读的方式安排来自生物识别阅读器的考勤数据来帮助 HR。阅读器的输出汇总在 Access 数据库中。输出如下图所示:
每个员工每天可以有 1 个 IN 和 1 个 EXIT(f_ReaderName 列)。他们中的一些人多次刷卡并记录多个IN或EXIT。如何查询数据库或以编程方式安排此数据库,以使每个 Data 列值具有每个 f_CardNO 和 2 列的单个记录:Ora 的最大值,其中 f_ReaderName = 1-1[In]和Ora 的最小值,其中f_ReaderName = 1-1[退出]?
有什么方法可以实现吗?提示将非常有用。非常感谢!
LE:设法获取此查询,但无法解析,我在语法上做错了什么:
SELECT
CR.f_CardNO,
Format(CR.f_ReadDate, 'Short Date') AS Data,
CR.f_ConsumerName,
CR.f_GroupName,
CR.f_ReaderName,
(
SELECT
ISNULL(MAX(FORMAT(CR.f_ReadDate, 'Long Time')), 0) AS Expr1
FROM
v_d_CardRecord CR1
WHERE
(
CR.f_ReadDate = CR1.f_ReadDate
AND CR.CardNO = CR1.CardNO
AND CR1.F_ReaderName = # 1 - 1[In] #
)
)
As OraIntrare,
(
SELECT
ISNULL(MIN(FORMAT(CR.f_ReadDate, 'Long Time')), 0) AS Expr1
FROM
v_d_CardRecord CR1
WHERE
(
CR.f_ReadDate = CR1.f_ReadDate
AND CR.CardNO = CR1.CardNO
AND CR1.F_ReaderName = # 1 - 1[Exit] #
)
)
As OraIesire
FROM
v_d_CardRecord CR
WHERE
(
CR.f_ReadDate > # 12 / 1 / 2016 #
)
ORDER BY
CR.f_ConsumerName,
Format(CR.f_ReadDate, 'Short Date')
GROUP BY
CR.f_CardNO,
Data,
CR.f_ConsumerName,
CR.f_GroupName,
CR.f_ReaderName,
OraIntrare,
OraIesire
【问题讨论】:
-
你知道如何使用 GROUP BY 吗?这可能是您搜索的开始。
-
您好!我已经用我想出的内容编辑了我的主要查询。