日期:2014-05-18  浏览次数:20683 次

求帮写一个存储过程,急,~~,在线等.
表:t1
  services       港口       到港       离港       SI截关       CY截关       TT(所需天数)
    c1                 香港       周日       周日         周五           周六  
    c1               他科马     周五       周六                                           12
    c1               奥克兰     周一       周二                                           15                              
    c1               檀香山     周六       周日                                           20
    c1               关岛         周二       周三                                           30


表:t2
  Services         年份           第几周
      c1                 2007             34
      c1                 2008             34

要得到这样的结果:

                                                            香港                                                 到港时间
services   年份   第几周   到港   离港   SI截关   CY截关   他科马     奥克兰     檀香山     关岛
c1               2007     34         8-19   8-19   8-24       8-25         8-31         9-3           9-8         9-13
c1               2008     34         ?         ?..............................................
..
..

也就是说:在t1中已经有了周几和TT(例如:从香港到他科马需要12天),
在t2中有对应的services,然后通过年份和给出的第几周,来得到那样的结果.



------解决方案--------------------
这里最大的问题是如何确定2007年第34周的星期几那天的日期,
以他科马为例:
services 年份 第几周 到港 离港 SI截关 CY截关 他科马 奥克兰 檀香山 关岛
c1 2007 34 8-19 8-19 8-24 8-25 8-31 9-3 9-8 9-13
----------------------------------------
到港和离港日期都是8-19,周日.但是2007年第34周的周日那天并不是2007-08-19,而是2007-09-02,计算方法为:
set datefirst 1
select dateadd(day,7-(datepart(weekday,dateadd(week,34, '2007-01-01 '))),dateadd(w