声明这是我有:SQL嵌套如果内部计数
SELECT Count(*) AS cnt
FROM tblOccurrence AS x
WHERE (((x.OccurrenceDate) Between DateAdd('m',-6,Date()) And Date())
AND ((Exists (SELECT *
FROM tblOccurrence AS y
WHERE y.TechID = x.TechID AND DATEADD ('d', -1, x.[OccurrenceDate]) = y.[OccurrenceDate]))=False)
AND ((x.TechID)= " & Me.tbxTechID.Text & "))
GROUP BY x.TechID;
这是用来计算员工缺勤“事件”,如果员工无故1天是1次出现。如果他们连续5天无效,那仍然是一次。
这是完美的工作,直到有人指出,如果员工有星期五和星期一的M-F班次,那只有一次发生。为了让事情变得更加艰难,我们的员工变化很大(MF,星期二,星期六,星期一,星期六,星期六,星期六,星期六等)......所以我建立了一张桌子,可以容纳所有不同的班次其中8人),有9列:
ID - ShiftName - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday
的ShiftName是简短的描述(周一至周五,周二,五,日,星期四,等),然后是/否字段天的文本字段一周中的。然后,复选标记是预定日期。
所以我很想大家的输入2周的事情,
- 这是一个“好”的方式来捕捉我需要什么拍摄?
- 该SQL语句如何改变以使得发生次数正确,同时考虑到包装周末的无故缺勤但计为1次发生?
因此,看起来人们实际上只会发生第二次事件的唯一时间是他们是否真的回到工作岗位并有另一次缺席。你记录他们在工作的日子吗? – UnhandledExcepSean 2012-08-17 13:14:12
正确。如果某人在星期一无心再回到星期二工作,并在星期三再次出现,那是两次。 – Zamael 2012-08-17 13:19:12
而员工的转变现在用上面描述的表格(tblShifts)捕获。 9列,是/否每周的每一天,他们的预定日期都有“是”值,他们的预定休息日是“不”值 – Zamael 2012-08-17 13:20:52