sql - 在 QoQ Coldfusion 中使用 HAVING 的两个额外列

标签 sql coldfusion having qoq

当我在 QoQ coldfusion 中使用 HAVING 时,返回的查询将有两个额外的列:“Column_7”和“Column_8”

原始结果 enter image description here

还有两个额外列的结果 enter image description here

这是我的代码

var qEffectifTemp = queryExecute("
 SELECT CONVIVETYPELABEL, 
    SUM(EFFECTIFITEMVALEURPREVISIONNELLE) AS REPASPREVISIONNELLETOTAL, 
    SUM(EFFECTIFITEMVALEURSAISIE) AS REPASSAISIETOTAL, 
    OFFICENAME, 
    SATELLITENAME,
    REPASTYPELABEL,
    CUISINECENTRALENAME
 FROM   qEffectifsItemTemp
 GROUP BY REPASTYPELABEL, SATELLITENAME, CONVIVETYPELABEL, OFFICENAME, CUISINECENTRALENAME
 HAVING SUM(EFFECTIFITEMVALEURPREVISIONNELLE) <> SUM(EFFECTIFITEMVALEURSAISIE)", {}, {dbtype="query"}
);

那为什么呢?谢谢你的帮助

最佳答案

问题是您没有正确使用别名。

此示例查询产生相同的问题:

<cfquery  name="childQuery" dbtype="query">
    SELECT sum(age) as Total, lastname FROM parentQuery
    GROUP BY id,lastname
    HAVING sum(age) > 10
</cfquery>

Image of extra column

在 HAVING 子句中使用别名(如以下查询)可解决问题:

 <cfquery  name="childQuery" dbtype="query">
        SELECT sum(age) as Total, lastname FROM parentQuery
        GROUP BY id,lastname
        HAVING Total > 10
    </cfquery>

Image of result, without extra columns

您的问题是您已经为 sql 中的列创建了别名:

, SUM(EFFECTIFITEMVALEURPREVISIONNELLE) AS REPASPREVISIONNELLETOTAL 
, SUM(EFFECTIFITEMVALEURSAISIE) AS REPASSAISIETOTAL

HAVING 子句中再次使用 SUM 会创建额外的列,例如 column_7column_8。相反,您应该使用别名:

HAVING REPASPREVISIONNELLETOTAL <> REPASSAISIETOTAL

因此您的完整查询应如下所示:

var qEffectifTemp = queryExecute("
         SELECT CONVIVETYPELABEL, 
            SUM(EFFECTIFITEMVALEURPREVISIONNELLE) AS REPASPREVISIONNELLETOTAL, 
            SUM(EFFECTIFITEMVALEURSAISIE) AS REPASSAISIETOTAL, 
            OFFICENAME, 
            SATELLITENAME,
            REPASTYPELABEL,
            CUISINECENTRALENAME
         FROM   qEffectifsItemTemp
         GROUP BY REPASTYPELABEL, SATELLITENAME, CONVIVETYPELABEL, OFFICENAME, CUISINECENTRALENAME
         HAVING REPASPREVISIONNELLETOTAL <> REPASSAISIETOTAL", {}, {dbtype="query"}
        );

关于sql - 在 QoQ Coldfusion 中使用 HAVING 的两个额外列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904499/

相关文章:

sql - 为什么 like-operator 这么快

带分组、过程和 "HAVING"的MySQL查询

mysql - HAVING 在 Laravel 中抛出错误,而不是在 PHPMyAdmin 中

mysql - 按数字顺序排列字符串

sql - 为什么插入单行比一次插入 x 行快 x 倍

mysql - 精确单词搜索中允许出现一个字母错误

coldfusion - cffile 正在覆盖现有文件

javascript - 如何使用 JavaScript 更改主页上的每日图像?

Coldfusion 添加查询中的变量

sql - 为什么 AVG() 没有给出结果?