2012-06-15 188 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