我有一个名为 tbl_remit 的表。
id emp_id comp_name e_from e_to amount
1 123 a 2016-01-01 2016-01-31 10.00
2 123 a 2016-02-01 2016-02-29 5.00
3 123 a 2016-03-01 2016-03-31 20.00
4 456 b 2016-02-01 2016-02-29 50.00
5 789 c 2016-02-01 2016-02-29 10.00
6 789 c 2016-03-01 2016-03-31 15.00
我需要统计并选择2016-01-01到2016-01-31期间所有未付款的emp_id。
雇主总数:3 (2016-01-01 至 2016-01-31) 期间未付款的雇主总数:2
id emp_id comp_name
1 456 b
2 789 c
有没有办法统计没有数据的地方?这是我使用这个语句的语句。
SELECT COUNT(PEN) FROM view_remit WHERE E_FROM != '"& varDateFrom &"' AND E_TO != '"& varDateTo &"' AND Assigned_ACCOUNT = '"& varAssignedAccount &"'
很抱歉提出这个新手问题。
最佳答案
我只有这个表,您可以使用子查询的否定匹配来获取此数据:
SELECT DISTINCT emp_id, comp_name
FROM tbl_remit
WHERE emp_id NOT IN
(SELECT emp_id
FROM tbl_remit
WHERE (e_from <= '2016-01-31' AND e_to >= '2016-01-01')
)
首先,子查询从 tbl_remit 的行中选择相关时间段内的所有 emp_id。接下来,您询问那些不在该集合中的 emp_id。
此查询不会显示从未支付过任何费用的人员的 emp_id。如果您有一个包含可能的 emp_id 的单独表,您还可以使用该表作为主查询,并将 emp_id 与 tbl_remit 子查询中的 emp_id 进行匹配。
关于mysql - 如何根据没有数据的月份统计并选择所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39869484/