SELECT
CASE WHEN SUM(X.Count)*3600 is null THEN  '0'
            ELSE
            SUM(X.Count)*3600
       END AS PJZ,
       X.Mass
FROM X
WHERE X.Mass > 2000
HAVING ((X.Mass / PJZ * 100) - 100) >= 10;

获取:错误:列P.jjz不存在。
我怎么能做这样的事?

最佳答案

将其包装到派生表中:

SELECT CASE
          WHEN PJZ = 0 THEN 100
          ELSE PJZ
       END as PJZ,
       mass
FROM (
    SELECT CASE
             WHEN SUM(X.Count)*3600 is null THEN '0'
             ELSE SUM(X.Count)*3600
           END AS PJZ,
           X.Mass
    FROM X
    WHERE X.Mass > 2000
    GROUP BY X.mass
) t
WHERE PJZ = 0
   OR ((X.Mass / PJZ * 100) - 100) >= 10;

(请注意,我添加了缺少的组,否则查询将无效)

08-26 12:38