如何在SQL中只计算1?

时间:2017-04-02 11:45:38

标签: sql

我正在尝试运行一份报告,看看上个月有多少车辆需要修理,有多少需要维修。如下图所示,如果车辆已进行维修,则指定为1,否则为0。这是我目前的尝试,并且它返回的是1和0,我不会这样做&#39不想要。非常感谢任何帮助。

Table

 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

2 个答案:

答案 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;

这是有效的,因为值似乎是01。换句话说,这些列被设计为可以为此目的总结的标志。

如果他们可以接受其他值,您可以使用以下内容:

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

或任何类似的过滤器可以满足您的业务需求。