我在为以下场景寻找解决方案时遇到了问题。对于具有以下 start_date 和 end_date 的产品,我有 3 条记录。
Case:1
record1: 03-10-2012 and 30-10-2012
record2: 03-10-2012 and 10-10-2012
record3: 11-10-2012 and 20-10-2012
Case:2
record1: 03-10-2012 and 30-10-2012
record2: 11-10-2012 and 20-10-2012
record3: 21-10-2012 and 30-10-2012
Case:3
record1: 03-10-2012 and 30-10-2012
record2: 03-10-2012 and 10-10-2012
record3: 21-10-2012 and 30-10-2012
在上述所有情况下,我需要创建缺少日期的第 4 条记录(例如,在 case1 中,我需要从 21 日到 30 日的记录)并且想删除如果我有记录时不再需要的记录 1缺少日期。
有什么方法可以一次性完成所有事情吗?我曾尝试使用 case 命令执行此操作,但没有运气。
这就是我写的。
select MIN(end_date) AS min_end_date, MIN(start_date) AS min_start_date,
CASE WHEN MIN(start_date) <= MIN(end_date) AND MIN(start_date) > DATE '#{start_date}' THEN DATE_SUB(MIN(start_date), INTERVAL 1 day)
ELSE MIN(end_date)
END AS min_date
提前致谢。