我正在尝试运行一份报告,看看上个月有多少车辆需要修理,有多少需要维修。如下图所示,如果车辆已进行维修,则指定为1,否则为0。这是我目前的尝试,并且它返回的是1和0,我不会这样做&#39不想要。非常感谢任何帮助。
select
vehicles_inspections.Vehicle_ID,
make,
model,
count(Repair),
count(Service)
from vehicles_inspections, vehicles
where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID
group by Vehicle_ID
答案 0 :(得分:3)
根据您显示的数据,您只需使用sum()
而不是count()
:
select vi.Vehicle_ID, v.make, v.model, sum(vi.Repair), sum(vi.Service)
from vehicles v join
vehicles_inspections vi
on v.Vehicle_ID = vi.Vehicle_ID
group by vi.Vehicle_ID, v.make, v.model;
这是有效的,因为值似乎是0
或1
。换句话说,这些列被设计为可以为此目的总结的标志。
如果他们可以接受其他值,您可以使用以下内容:
sum(case when repair = 1 then 1 else 0 end) as repairs
注意:
FROM
子句中使用逗号。 始终使用正确的JOIN
语法。答案 1 :(得分:0)
这是你现有的where子句:
where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID
对于该子句,请添加:
and repair_service_complete = 0
and repair = 1
或任何类似的过滤器可以满足您的业务需求。