2017-01-09 14 views
0

これまでは、一連の検査でグループ化された検査の数を合計し、合格検査( 'P')の合計を減算するこの作業クエリを使用しました。パスの数は、その後の検査の数に等しい場合、これは全体的なパスとみなされ、私たちは、そうでない場合は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 

を1の値を割り当てるこれは私が欲しいので

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

のような結果が得られますそうすることはSUMの結果です。 SELECT 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