2012-06-15 62 views
0

我有2列一个SQL表如下如何选择日期范围之间的所有日期?

列1:ProductionDate - 日期时间 - 非NULL

列2:产品数量 - 诠释 - 非NULL

现在有2个记录表

2012年1月1日,5

2012年1月3日,结果的7

输出应该是如下如果我给时间范围的StartDate如2012年1月1日和结束日期2012年1月15日作为

1-1 -2012 5

2012年1月2日0

2012年1月3日7

2012年1月4日0

1-5-2012 0

1-6-2012 0

2012年1月15日0

手段查询应返回给定范围内所有的日期与数量,如果表的数量没有条目,然后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 
相关问题