即使在给定的一天中没有数据,也要返回总和

时间:2017-11-16 21:26:41

标签: sql access-vba

我的桌子上只有几天的金额,例如:

odd?

如何查询数据并获取:

[DATE] [AMT]
11/1/2017 $123
11/1/2017 $50
11/3/2017 $123

我试过了:

11/1/2017 $173
11/2/2017 $0
11/3/2017 $123

但是没有数据,任何想法,它仍然没有返回0?

4 个答案:

答案 0 :(得分:1)

你需要一张包含所有日子的桌子,所以你可以填补空洞,我们称之为allDays

Get a list of dates between two dates using a function

然后你的查询是:

 SELECT a.[date], COALESCE(SUM([AMT]),0)
 FROM allDates a
 LEFT JOIN yourTable t
   ON a.[date] = t.[date]
 GROUP BY a.[date]

答案 1 :(得分:1)

Access 中,您可以在第一个和最后一个日期之间创建一系列日期,然后为汇总数据创建外部联接。

以下是创建日期系列的方法:

Create a date table between two dates

答案 2 :(得分:0)

有两个简单的解决方案。

答案 3 :(得分:0)

我建议您尝试以下查询:

SELECT DATE_FORMAT(date, "%b") AS month, SUM(total_price) as total
FROM table
WHERE date <= NOW()
and date >= Date_add(Now(),interval - 12 month)
GROUP BY DATE_FORMAT(date, "%m-%Y"))