使用从开始日期到结束日期的不同周数自动生成记录

时间:2013-12-21 08:39:01

标签: sql for-loop view

我想创建一个包含3列的视图:Item,Date,Qty

这些视图从2个表中获取数据:

  1. 表格A:包含所有3列

    Item      Date          Qty
    A    2013-12-20        1   
    A    2013-12-27        2  
    B    2013-12-20        3 
    B    2013-12-27        4
    
  2. 表B:包含开始日期和结束日期

    StartDate       EndDate
    2013-12-20      2014-12-26
    
  3. 开始日期和结束日期之间的每个段的时间间隔是一周。

    当特定周内表A中没有行时,我需要在视图中插入行 结果应如下所示:

    Item      Date          Qty
      A    2013-12-20        1   <-- Start Day
      A    2013-12-27        2   
      A    2014-1-3          0   <--mark qty as 0 when there is no record in Table A 
      A    2014-1-10         0   <--mark qty as 0 when there is no record in Table A
               .                 <--same logic til the end date
               .
      A    2014-12-26        0   <--End Date
      B    2013-12-20        3
      B    2013-12-27        4
      B    2014-1-3          0   <--mark qty as 0 when there is no record in Table A
      B    2014-1-10         0   <--mark qty as 0 when there is no record in Table A  
               .
               .
      B    2014-12-26        0   <--End Date
    

1 个答案:

答案 0 :(得分:0)

你需要这样的东西:

    select
    b.StartDate,
    a.Item,
    isnull(sum(a.Qty),0) as Qty
    from
    TableB b left join
    TableA a on a.Date >= b.StartDate and a.Date <= b.EndDate
    group by a.Item, b.StartDate

根据使用的RDBMS,您可能需要稍微更改这些部分。

a.Date >= b.StartDate and a.Date <= b.EndDate
isnull(sum(a.Qty),0)