使用日历视图加入检查视图

时间:2017-09-16 01:09:14

标签: sql database oracle

我有两个观点。一个有支票:

Check_Id    Issued_Date    Cleared_Date   Amount
1           2017.01.03     2017.02.04    100
2           2017.03.03     2017.04.04    100
3           2017.08.03                   100
...

另一个只是日历:

Day
2001.01.01
2001.01.02
2001.01.03
...
2100.12.31

我需要Tableau的脚手架视图。我想要实现的是,对于每张支票,在发行日期到清算日期之间的日期都有记录。如果没有清除日期,只需到时间结束(在这种情况下为2100.12.31)。

即,Check_id 1:

Day        Check_ID
2017.01.03 1
2017.01.03 1
2017.01.03 1
2017.01.03 1
...
2017.02.04 1
2017.08.03 3
2017.08.04 3
2017.08.05 3
2017.08.06 3
...
2100.12.31 3

我读过的任何小费或东西都能得到它吗?谢谢!

1 个答案:

答案 0 :(得分:1)

这是非等值的:

select ca.day, c.check_id
from checks c join
     calendar ca
     on ca.day >= c.issued_date  and
        (c.cleared_date is null or c.cleared_date >= ca.date);