SQL Server中的日期销售没有显示为零

时间:2015-01-21 05:25:37

标签: sql-server sql-server-2008 sql-server-2012

我对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中解决这个问题

1 个答案:

答案 0 :(得分: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