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))作为[细分]