到目前为止,我有这个有效的查询,它将按序列号分组的检查次数相加,然后减去通过检查的那些总和(' P')。如果通过次数等于检查次数,那么这被认为是整体通过,我们分配值1,否则为0.
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.
我想做的是结果。我尝试使用 SELECT SUM(现有查询)封装整个查询,但无法使其正常工作。
答案 0 :(得分: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 。