在 case 语句查询中增加临时变量值

Increment temperory variable value in case statement query

尝试使用 case 语句根据列值计算计数,我使用以下代码来执行此操作:

SET @tempVariable1 := 0;
SET @tempVariable2 := 0;
SELECT EMPLOYEEID,count(ADNUMBER),
                        CASE
                            WHEN AEERROR <> '--' then @tempVariable1:=@tempVariable1+1
                        ELSE 0
                        END AS Ext_err,
                        CASE
                            WHEN INTERNALERRORS <> '--' then @tempVariable2:=@tempVariable2+1
                        ELSE 0
                        END AS Int_err
FROM employee_productivity_details group by(EMPLOYEEID) LIMIT 2,20;

当我在 workbench 上 运行 时它工作正常但是当我在 PHP 变量中设置此查询时 $sql 然后它显示错误。那么如何在查询中设置临时变量呢?还有其他方法吗?

这是你想要的吗?

SELECT EMPLOYEEID, count(ADNUMBER),
       SUM(AEERROR <> '--') AS Ext_err,
       SUM(INTERNALERRORS <> '--' ) AS Int_err
FROM employee_productivity_details
group by(EMPLOYEEID)
LIMIT 2, 20;

根据需要,这对我来说效果很好。

 SELECT EMPLOYEEID,
     count(ADNUMBER),
     COALESCE(SUM(CASE INTERNALERRORS WHEN INTERNALERRORS <> '--' 
     THEN 0 ELSE 1 END), 0) as IntErr,
     COALESCE(SUM(CASE AEERROR WHEN AEERROR <> '--' 
     THEN 0 ELSE 1 END), 0) AS ExtErr 
   FROM employee_productivity_details 
   group by(EMPLOYEEID) order by EMPLOYEEID LIMIT 2,20;