Sql 包括「;0“;计数(*)聚合中的结果

Sql 包括「;0“;计数(*)聚合中的结果,sql,ms-access,join,count,Sql,Ms Access,Join,Count,早上好,我在论坛中搜索了一个疑问,但我看到的结果并没有给我一个解决方案 我有两张桌子 汽车: Id Model 1 Seat 2 Audi 3 Mercedes 4 Ford IdBd Description Date Price IdCar 1 Engine 01/01/2020 500 € 3 2 Battery 05/01

早上好,我在论坛中搜索了一个疑问,但我看到的结果并没有给我一个解决方案

我有两张桌子

汽车:

Id    Model
1     Seat
2     Audi
3     Mercedes
4     Ford
IdBd   Description         Date         Price      IdCar
1      Engine              01/01/2020   500 €      3
2      Battery             05/01/2020   0 €        1
3      Wheel's change      10/02/2020   110,25 €   4
4      Electronic system   15/03/2020   100 €      2
5      Brake failure       20/05/2020   0 €        4
6      Engine              25/05/2020   400 €      1
分类:

Id    Model
1     Seat
2     Audi
3     Mercedes
4     Ford
IdBd   Description         Date         Price      IdCar
1      Engine              01/01/2020   500 €      3
2      Battery             05/01/2020   0 €        1
3      Wheel's change      10/02/2020   110,25 €   4
4      Electronic system   15/03/2020   100 €      2
5      Brake failure       20/05/2020   0 €        4
6      Engine              25/05/2020   400 €      1
我想做一个查询,显示成本为0欧元的每月故障数

我有一个疑问:

SELECT Year(breakdowns.[Date]) AS YEAR, StrConv(MonthName(Month(breakdowns.[Date])),3) AS MONTH, Count(*) AS [BREAKDOWNS]
FROM cars LEFT JOIN breakdowns ON (cars.Id = breakdowns.IdCar AND breakdowns.[Price]=0)
GROUP BY breakdowns.[Price], Year(breakdowns.[Date]), Month(breakdowns.[Date]), MonthName(Month(breakdowns.[Date]))
HAVING ((Year([breakdowns].[Date]))=[Insert a year:])
ORDER BY Year(breakdowns.[Date]), Month(breakdowns.[Date]);


结果是(如果我把“2020年”放进去):

我想:

YEAR   MONTH       BREAKDOWNS
2020   January     1
2020   February    0
2020   March       0
2020   May         1

谢谢

HAVING条件应该在WHERE(否则它会将外部连接更改为内部连接)。但只要不使用
cars
中的列,就没有必要加入它

要在没有零价格的情况下获得数月的行,您应该切换到条件聚合(Access不支持标准SQL CASE,但支持IIF?)


@我试过一匹没有名字的马,但同样的结果能回答你的问题吗?您的查询出现语法错误,并且缺少第二个结账参数“总和(IIf(细分。[Price]=0;1;0)作为[细分]”:
SUM(IIf(细分。[Price]=0;1;0))作为[细分]