在具有INNER JOIN和GROUP BY的两个SELECT语句之间使用一个日期变量



我有一个表,其中有一些列,如:日期、员工姓名、班次号(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'

最新更新