我有一个表,其中有一些列,如:日期、员工姓名、班次号(1,2或3(。我想汇总数据,以接收基于所选日期(即到此指定日期(的特定员工的轮班次数。我需要查看以下列:日期、员工姓名、轮班编号(1,2或3(、到第一列中指定日期的轮班总数。
使用INNER JOIN和两个SELECT语句,我可以获得所有日期的总班次,例如(班次1(:
SELECT *
FROM employees a
INNER JOIN (SELECT employee, COUNT(value) AS shifts FROM employees WHERE value='1' GROUP BY employee) b ON b.employee=a.employee
WHERE date>='2020-11-05'
如何更改查询以仅显示每个员工在选定日期之前的轮班总数?
谢谢你的帮助!
编辑:样品数据要求,我有什么:
date employee value
2020-11-05 X 1
2020-11-05 Y 2
2020-11-05 Z 3
2020-11-06 X 1
2020-11-06 Y 2
2020-11-06 Z 3
我需要什么:
date employee value shifts_1
2020-11-05 X 1 1
2020-11-05 Y 2 0
2020-11-05 Z 3 0
2020-11-06 X 1 2
2020-11-06 Y 2 0
2020-11-06 Z 3 0
总之,在这种情况下,最后一列应该显示在指定日期之前分配给每个员工的第一班的数量。
SELECT*,b.SumOfShifts,b.shiftsFROM员工aINNER JOIN(SELECT employee,COUNT(value(AS shifts,SUM(value其中日期>='2020-11-05'