如何组合这两个查询?
How can I combine these 2 queries?
SELECT
USERINFO.Name, USERINFO.SSN, USERINFO.Badgenumber,
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEINAM,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUTAM
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d", 1, PERIOD_END) AND
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") = "AM") AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name, Min(CHECKINOUT.CHECKTIME);
查询显示timein和timeout的输出-AM
SELECT
USERINFO.Name,
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEINPM,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUTPM
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d",1,PERIOD_END) AND
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") = "PM") AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name, Min(CHECKINOUT.CHECKTIME);
查询 2 - PM 的时间和超时。
我需要同时显示这两个查询的输出。有 USERINFO.Name 和 DATE
看来你只需要按时间分组即可:
SELECT
USERINFO.Name,
USERINFO.SSN,
USERINFO.Badgenumber,
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") AS [AM/PM],
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEIN,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUT
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d", 1, PERIOD_END) AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID,
USERINFO.Name,
USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME),
FORMAT(CHECKINOUT.CHECKTIME, "AMPM"),
USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name,
FORMAT(CHECKINOUT.CHECKTIME, "AMPM"),
Min(CHECKINOUT.CHECKTIME);
SELECT
USERINFO.Name, USERINFO.SSN, USERINFO.Badgenumber,
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEINAM,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUTAM
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d", 1, PERIOD_END) AND
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") = "AM") AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name, Min(CHECKINOUT.CHECKTIME);
查询显示timein和timeout的输出-AM
SELECT
USERINFO.Name,
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEINPM,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUTPM
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d",1,PERIOD_END) AND
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") = "PM") AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name, Min(CHECKINOUT.CHECKTIME);
查询 2 - PM 的时间和超时。
我需要同时显示这两个查询的输出。有 USERINFO.Name 和 DATE
看来你只需要按时间分组即可:
SELECT
USERINFO.Name,
USERINFO.SSN,
USERINFO.Badgenumber,
FORMAT(CHECKINOUT.CHECKTIME, "AMPM") AS [AM/PM],
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEIN,
FORMAT((Max(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm am/pm") AS TIMEOUT
FROM
CHECKINOUT
INNER JOIN
USERINFO ON CHECKINOUT.USERID = USERINFO.USERID
WHERE
(CHECKINOUT.CHECKTIME >= DATEVALUE(PERIOD_START) AND
CHECKINOUT.CHECKTIME < DATEADD("d", 1, PERIOD_END) AND
USERINFO.Name = Insert_Name
GROUP BY
CHECKINOUT.USERID,
USERINFO.Name,
USERINFO.SSN,
DateValue(CHECKINOUT.CHECKTIME),
FORMAT(CHECKINOUT.CHECKTIME, "AMPM"),
USERINFO.Badgenumber
HAVING
(((USERINFO.Badgenumber) < "8000"))
ORDER BY
USERINFO.Name,
FORMAT(CHECKINOUT.CHECKTIME, "AMPM"),
Min(CHECKINOUT.CHECKTIME);