【问题标题】:Show zero value when no data available in date sequence当日期序列中没有可用数据时显示零值
【发布时间】:2015-02-02 08:59:20
【问题描述】:

我有一个包含两列 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] 标记 SQL Server 时,您不必在标题和问题中提及 3 次

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


【解决方案1】:

考虑一下这是你的桌子

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

我已经在查询中编写了逻辑

 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

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多