我正在尝试制作一个摘要,如果过去一天SELECT
中的任何数据显示...或者仅显示一天(if > 0 : +
, if < 0 : -
)。
像这样:这些是我的桌子。
我们说,今天是 2013-12-25
tb_employee:
ID_EMP EMPLOYEE
1 Employee 1
2 Employee 2
3 Employee 3
tb_requirement:
ID_REQ REQUIREMENT
1 Requirement 1
2 Requirement 2
3 Requirement 3
4 Requirement 4
tb_detail:
ID_DET ID_EMP ID_REQ EXPIRATION
1 1 1 2013-12-29
2 1 2 2013-12-28
3 1 3 2013-12-31
4 2 2 2014-01-05
5 2 3 2013-12-20
6 2 4 2013-12-15
现在,SELECT QUERY
应该显示如下:
ID_EMP EMPLOYEE REQUIREMENTS_GOT ANY_REQ_EXPIRE
1 Employee 1 3 YES
2 Employee 2 3 NO
我希望我解释得很好。也许可能是DATEDIFF
?
感谢您的回答...当然,圣诞快乐!
答案 0 :(得分:1)
由于您要确定任何要求是否已过期,您应该将最小到期日期与今天的日期进行比较。没有必要使用datediff
- 在>
语句中打包的简单case
运算符会执行:
SELECT id_emp,
employee,
COUNT(*) AS requirements_got,
CASE WHEN CURDATE() > MIN(expiration) THEN 'yes' ELSE 'no' END AS any_req_expire
FROM tb_detail
JOIN tb_employee ON tb_detail.id_emp = tb_employee.id_emp
GROUP BY id_emp, employee