如何选择日期范围之间的所有日期?

时间:2012-06-15 13:18:29

标签: range common-table-expression

我有一个带有2列的SQL表,如下所示

  

Column1:ProductionDate - DateTime - Not NULL

     

Column2:Quantity - Int - Not NULL

现在表中有2条记录

  

1-1-2012,5

     

1-3-2012,7

如果我将日期范围StartDate设为1-1-2012并将EndDate设为1-15-2012

,则结果输出应如下所示

  

1-1-2012 5

     

1-2-2012 0

     

1-3-2012 7

     

1-4-2012 0

     

1-5-2012 0

     

1-6-2012 0

     

     

     

     

1-15-2012 0

表示查询应返回给定范围的所有日期和数量,如果表中没有条目,则0表示数量。

怎么做?请使用查询建议

1 个答案:

答案 0 :(得分:0)

这是关于你可以使用什么的非常乐观的草稿(来源 - here

declare @startDate datetime;
declare @endDate datetime;

set @startDate = '2012-02-09';
set @endDate = '2012-02-15';

WITH span AS (
  SELECT @startDate AS dt
  UNION ALL
  SELECT DATEADD(dd, 1, dt)
    FROM span s
   WHERE DATEADD(dd, 1, dt) <= @endDate)

select s.dt, t.Quantity from span s
join table t
on s.dt = t.ProductionDate 
相关问题