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是通用标记。