如何修改SELECT中MIN(remind_date)获取大于今日的最小提醒日期
获取每个ID的下一个提醒日期
要满足仅修改SELECT中的MIN(remind_date)部分且不添加WHERE子句的要求,你可以用带条件判断的MIN函数实现——只筛选大于今日的日期再取最小值,小于等于今日的日期会被自动忽略。
修改后的完整SQL语句如下:
SELECT ID, MAX(column1), MIN(CASE WHEN remind_date > CURRENT_DATE THEN remind_date END) AS next_remind_date FROM My_View GROUP BY ID
逻辑说明
CASE WHEN remind_date > CURRENT_DATE THEN remind_date END:对每条记录做判断,仅保留大于今日的日期,不符合条件的返回NULLMIN(...):MIN函数会自动忽略NULL值,最终计算出每个ID分组里大于今日的最小提醒日期- 如果某个ID没有大于今日的提醒日期,该字段会返回NULL,不会排除整个ID的记录,完全符合不添加WHERE子句的限制
不同数据库的今日日期函数略有差异,可按需替换:
- MySQL/MariaDB:用
CURDATE()替代CURRENT_DATE - SQL Server:用
CAST(GETDATE() AS DATE)替代CURRENT_DATE - Oracle:用
SYSDATE替代CURRENT_DATE
内容的提问来源于stack exchange,提问作者saurabh gupta
相关产品推荐
相关产品推荐

