Ms access SQL计数非连续日期

Ms access SQL计数非连续日期,ms-access,count,Ms Access,Count,以下是数据: empID Date Type ----- -------- ---- 1 1/1/2012 u 1 1/2/2012 u 1 1/3/2012 u 1 2/2/2012 u 4 1/1/2012 u 4 1/3/2012 u 4 1/4/2012 u 4 1/6/2012 u 将返回: empID count ----- ----- 1 2 4 3 当两个日

以下是数据:

empID Date     Type
----- -------- ----
    1 1/1/2012  u
    1 1/2/2012  u
    1 1/3/2012  u
    1 2/2/2012  u
    4 1/1/2012  u
    4 1/3/2012  u
    4 1/4/2012  u
    4 1/6/2012  u
将返回:

empID count
----- -----
    1     2
    4     3
当两个日期在一起时,它们算作一个事件,如果日期分开,它们算作两个事件。这是用于跟踪员工出勤情况。。。SQL语句如何按日期分组并将它们计为1。。。我真的在逻辑上挣扎

试试这个:

SELECT 
    empID
  , COUNT(*) AS cnt
FROM 
    tableX AS x
WHERE
    NOT EXISTS
        ( SELECT *
          FROM tableX AS y
          WHERE y.empID = x.empID
            AND DATEADD ("d", -1, x.[Date]) = y.[Date]
        )
GROUP BY
    empID ;
;WITH CTE as
(select *,ROW_NUMBER() over (partition by empID order by date) as rn from test2 t1)

select empID,COUNT(*) as count
from CTE c1
where isnull((DATEDIFF(day,(select date from CTE where c1.rn=rn+1 and empID=c1.empID ),c1.date)),0) <> 1
group by empID 
试试这个:

;WITH CTE as
(select *,ROW_NUMBER() over (partition by empID order by date) as rn from test2 t1)

select empID,COUNT(*) as count
from CTE c1
where isnull((DATEDIFF(day,(select date from CTE where c1.rn=rn+1 and empID=c1.empID ),c1.date)),0) <> 1
group by empID 

这实际上在Access 10中。。。到目前为止我什么都没做。。。周末没关系。。。。数据是手动输入的,我只需要逻辑来构建事件这实际上是在Access 10中。。。到目前为止我什么都没做。。。周末没关系。。。。数据是手动输入的,我只需要逻辑来构建occurancesHere是我所拥有的,我得到了一个语法错误:选择TechID,将*作为cnt从tblOccurances计算为x,如果不存在,将*从tblOccurances计算为y,其中y.TechID=x.TechID DATEADD d,-1,x.[OccuranceDate]=y。[发生日期]按TechID分组您忘记了AND:其中y.TechID=x.TechID和DATEADD…若要在注释中编写代码,请使用反勾号:This`AND`显示为:AND,那么我如何在此添加一条警告?我只需要查找今天日期之前连续6个月的事件。我不关心今天之前的任何事件这些从员工记录中滚除您可以在WHERE x.[日期]上添加一个附加条件在…和…之间,不存在…其余的保持原样。这是我所拥有的,我得到了一个语法错误:选择TechID,将*作为cnt从tblOccurances计算为x,如果不存在,将*从tblOccurances计算为y,其中y.TechID=x.TechID DATEADD d,-1,x.[OccuranceDate]=y.[OccuranceDate]按TechID分组您忘记了AND:其中y.TechID=x.TechID和DATEADD…若要在注释中编写代码,请使用反勾号:This`AND`显示为:AND,那么我如何在此添加一条警告?我只需要查找今天日期之前连续6个月的事件。我不关心今天之前的任何事件这些从员工记录中滚除您可以在WHERE x.[Date]上添加一个附加条件,该条件介于…和…之间且不存在…其余条件保持不变。不在MS Access中,这是用户请求的。SQL是通用标记。不在MS Access中,这是用户请求的。SQL是通用标记。