如果结束日期为空,则进入上一个阶段
Contract_no Contract_phase end_date
100 Draft 01/01/2020
100 Review 01/02/2020
100 Executed 01/03/2020
100 Completed
200 draft 01/01/2020
200 Review 01/02/2020
200 Executed
300 draft 01/01/2020
300 Review 01/02/2020
300 Executed 01/03/2020
300 Completed 01/04/2020
select Contract_no,Contract_phase
where completion date between 01/01/2020 and 01/04/2020
我要在截止日期之前拉这些合同。在某些情况下,当系统尚未关闭最后一个阶段时,结束日期为null。未选择正确的相位,因为空结束日期的日期。客户希望我们选择上一个阶段,如果当前阶段的结束日期为空。在这种情况下,我如何使其选择上一个阶段。
我认为您只需要在这里汇总:
SELECT
Contract_no
FROM yourTable
GROUP BY
Contract_no
HAVING
MAX(end_date) BETWEEN date '2020-01-01' AND date '2020-04-01';
这应该起作用,因为默认情况下MAX
只会忽略NULL
值,因此将使用上一阶段的日期,以防后一个阶段的日期丢失。顺便说一下,这假设所有阶段都将按时间顺序发生。