考虑到这些租赁合同:
2012 2013 2014 2015 2016
YR | | | | |
FIN_YR | 2012-2013 | 2013-2014 | 2014-2015 | 2015-2016 |
____________________________________________________
1 ----------------++++--------------------------------
2 -----+++++++++++++++++++++++++++++++++++++++--------
4 -----------------------------++++++++++++++++++-----
持续了这些日期:
TENANCY_ID FROM TO
---------- ---------- ----------
1 2013-05-02 2013-08-12
2 2012-06-22 2015-09-01
4 2014-06-03 2015-11-15
我想制作一个长桌,如:
TENANCY_ID Financial_Year
---------- --------------
1 2013-2014
2 2012-2013
2 2013-2014
2 2014-2015
2 2015-2016
4 2014-2015
4 2015-2016
其中Financial_Year
显示每个租约至少部分持续的财政年度(4月1日至3月31日)。
如果相关,db2,否则通用解决方案就没问题了。
答案 0 :(得分:1)
抱歉,手头没有db2,这是Oracle的例子:
with financial_years as (
select to_char(r) || '-' || to_char(r + 1) as year,
to_date('01.04.' || to_char(r),'dd.mm.yyyy') as date_begin,
to_date('31.03.' || to_char(r + 1) || '23:59:59','dd.mm.yyyy hh24:mi:ss') as date_End
from t_fin_year -- here's a table (year INT)
)
select y.year,
t.id
from t_tenancy t
join financial_years y
on y.date_begin between t.from and t.to
OR y.date_end between t.from and t.to
order by t.id, y.year;
主要想法是加入财务年度与租赁日期:如果年份开始或结束是在租赁开始\结束之间,那么租赁属于今年。