2015-01-21 74 views
0

我有一個關於SQL Server的問題。請告訴我如何解決在SQL Server這個問題沒有銷售日期在SQL Server中顯示爲零

我有兩列sale_dateamount表:

sale_date  amount 
------------------- 
05/01/2014 400 
05/02/2014 350 
05/04/2014 430 
. 
. 

,但我所要的輸出包括amount零值,如果沒有特定月份的銷售額。

像這樣:

sale_date amount 
------------------- 
05/01/2014 400 
05/02/2014 350 
05/03/2014  0 
05/04/2014 430 
. 
. 

請告訴我如何在SQL Server解決這個

+0

一種方法是使用數字表或日曆表:http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-numbers-table.html建議Sarath Avanavu的解決方案使用遞歸CTE即時生成這樣的表格。有很多方法可以生成一個數字表格:http://sqlperformance.com/2013/01/t-sql-queries/generate-a-set-1 – 2015-01-21 06:32:40

回答

0

樣品臺

CREATE TABLE #TEMP(sale_date DATE, AMOUNT NUMERIC(18,2)) 

INSERT INTO #TEMP 
SELECT '05/01/2014', 400 
UNION ALL 
SELECT '05/02/2014', 350 
UNION ALL 
SELECT '05/04/2014', 430 

QUERY

DECLARE @MAXDATE DATE 
SELECT @MAXDATE = MAX(sale_date) FROM #TEMP 

; WITH CTE as 
(
    -- Select minimum date 
    SELECT MIN(sale_date) as DATES 
    FROM #TEMP  
    UNION ALL 
    -- Increments month recursively till maximum date 
    SELECT DATEADD(MONTH,1,DATES) 
    FROM CTE C1  
    WHERE DATES < @MAXDATE 
) 
SELECT DISTINCT DATES,ISNULL(T1.AMOUNT ,0)AMOUNT 
FROM CTE C1 
LEFT JOIN #TEMP T1 ON C1.DATES=T1.sale_date 
+0

我已更新。隨時要求任何改變。 @ user1623352 – 2015-01-21 06:00:45

+0

謝謝,。工作 – user1623352 2015-01-24 16:22:50

+0

謝謝。請將此標記爲答案。通過點擊答案左側的** TICK **按鈕。 @ user1623352 – 2015-01-25 13:09:31