只需要一点帮助。所以我在这里有此日历表sqlfiddle.com/#!3/5d8a9有2个标记(M,W)指示月份或星期。我需要与具有每周日期字段的TBL2(下)进行连接。因此,我将在weekstartdate上将TBL2与开始日期(带有W标志的Cal表)一起加入,但如果weekstartdate在开始日期和结束日期之间,则需要返回带有'M'标志的开始日期。是否有意义?
TBL2:
prod_id weeknum wkstartdate postingDate qty
----------------------------------------------------------------
1043890 5 2015-01-25 2016-01-18 3
1043890 6 2015-02-01 2016-01-18 6
1043890 7 2015-02-08 2016-01-18 2
1043890 8 2015-02-15 2016-01-18 0
...
1043890 50 2015-12-06 2016-01-18 1
1043890 51 2015-12-13 2016-01-18 2
1043890 52 2015-12-20 2016-01-18 7
Desired Result:
==================
prod_id weeknum wkstartdate postingDate qty Period
----------------------------------------------------------------------------
1043890 5 2015-01-25 2016-01-18 3 2015-01-25
1043890 6 2015-02-01 2016-01-18 6 2015-01-25
1043890 7 2015-02-08 2016-01-18 2 2015-01-25
1043890 8 2015-02-15 2016-01-18 0 2015-01-25
1043890 10 2015-03-01 2016-01-18 0 2015-03-01
...
1043890 50 2015-12-06 2016-01-18 1 2015-11-22
1043890 51 2015-12-13 2016-01-18 2 2015-11-22
1043890 52 2015-12-20 2016-01-18 7 2015-11-22
如果有道理,我正在尝试检查weekstartdate是否在带有标志M的日期范围(startdate-enddate)之间,然后带入startdate并用temp表更新该记录或使用temp表创建一个temp表。新列添加到每个记录。
谢谢。
我了解的是您试图将weekstarttable上的table2与startdate上的cal表连接起来,并且如果周开始日期介于开始日期和结束日期之间,则想修改标志。如果正确,请尝试以下查询。
select t2.prod_id,t2.weeknum,c.startdate
,case when t2.wkstartdate between c.startdate and c.enddate
then 'M' else null end modifiedflag,
c.flag as originalflag
from cal c,table2 t2
where c.flag ='W' and t2.wkstartdate = c.startdate
and t2.wkstartdate between c.startdate and c.enddate;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句