2017-01-09 72 views
0

到目前为止,我有这个工作查询,总结按序号分组的检查次数,然后减去通过检查('P')的总和。如果传球次数等于巡查的次数,那么这被认为是一个整体通和我们分配的值为1否则为0MySQL IF总结

SELECT IF(SUM(CASE 
      WHEN i.inspect_result IN ('P','F') THEN 1 
      ELSE 0 
      END) - 

     SUM(CASE 
      WHEN i.inspect_result ='P' THEN 1 
      ELSE 0 
      END)=0,1,0) as Results 

FROM inspections i WHERE workorder_id=5 GROUP BY serial_no 

这将产生像这样

------------- 
Results 
------------- 
1 
0 
1 
1 
0 
0 
1 
1 
1 
0 
etc. 

我想要的结果要做的是SUM结果。我试图封装整个查询与选择和(现有查询但无法让这个工作。

回答

0

你可以试试下面的查询:

SELECT SUM(Results) 
FROM (
SELECT IF(SUM(CASE 
      WHEN i.inspect_result IN ('P','F') THEN 1 
      ELSE 0 
      END) - 

     SUM(CASE 
      WHEN i.inspect_result ='P' THEN 1 
      ELSE 0 
      END)=0,1,0) as Results 

FROM inspections i WHERE workorder_id=5 GROUP BY serial_no 
) a 

这里是简单SQL Fiddle

+0

工作就像一个魅力 - 非常感谢你! – xarga