【问题标题】:how I combined this 2 queries?我如何结合这两个查询?
【发布时间】:2017-07-03 16:17:24
【问题描述】:
SELECT USERINFO.Name, 
FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy") AS DATE_IN, FORMAT((Min(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEIN_am, FORMAT((Max(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEOUT_pm, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm") AS DATE_SORT
FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID=USERINFO.USERID
WHERE (CHECKINOUT.CHECKTIME>=DATEVALUE(PERIOD_START) And CHECKINOUT.CHECKTIME<DATEADD("d",1,PERIOD_END))
GROUP BY CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN, DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
HAVING (((USERINFO.Badgenumber)<"8000"))
ORDER BY USERINFO.Name, Min(CHECKINOUT.CHECKTIME);

这个查询是针对上午的时间和下午的超时

SELECT USERINFO.Name, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy") AS DATE_IN, FORMAT((Min(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEOUT_am, FORMAT((Max(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEIN_pm, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm") AS DATE_SORT
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,"hh:mm")>"12:00" And FORMAT(CHECKINOUT.CHECKTIME,"hh:mm")<"13:00")
GROUP BY CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN, DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber, FORMAT(CHECKINOUT.CHECKTIME,"dd")
HAVING (((USERINFO.Badgenumber)<"8000"))
ORDER BY USERINFO.Name, Min(CHECKINOUT.CHECKTIME);

这个查询是上午的超时,下午的时间

【问题讨论】:

    标签: sql ms-access ms-access-2007


    【解决方案1】:
    SELECT * 
    FROM (
    SELECT USERINFO.Name, 
    FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy") AS DATE_IN, FORMAT((Min(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEIN_am, FORMAT((Max(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEOUT_pm, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm") AS DATE_SORT
    FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID=USERINFO.USERID
    WHERE (CHECKINOUT.CHECKTIME>=DATEVALUE(PERIOD_START) And CHECKINOUT.CHECKTIME<DATEADD("d",1,PERIOD_END))
    GROUP BY CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN, DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber
    HAVING (((USERINFO.Badgenumber)<"8000"))
    
    UNION ALL
    SELECT USERINFO.Name, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy") AS DATE_IN, FORMAT((Min(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEOUT_am, FORMAT((Max(CHECKINOUT.CHECKTIME))," hh:mm") AS TIMEIN_pm, FORMAT((Min(CHECKINOUT.CHECKTIME)),"dd-mmm-yyyy hh:mm") AS DATE_SORT
    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,"hh:mm")>"12:00" And FORMAT(CHECKINOUT.CHECKTIME,"hh:mm")<"13:00")
    GROUP BY CHECKINOUT.USERID, USERINFO.Name, USERINFO.SSN, DateValue(CHECKINOUT.CHECKTIME), USERINFO.Badgenumber, FORMAT(CHECKINOUT.CHECKTIME,"dd")
    HAVING (((USERINFO.Badgenumber)<"8000"))
    ) DB
    ORDER BY DB.Name, Min(DB.CHECKTIME)
    

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多