Mysql 请说明如何修复“组函数的无效使用”
我尝试在SUM函数中使用嵌套的CASE语法,但从3天起就什么都不起作用了 当我检索所有求和和和嵌套条件时,代码工作得非常好 我解释: 表格合同:每个客户都有一份合同,其中有两个值:Prix_TTC物品的价格,Qac_cont客户每月必须消费的物品数量 表命令:每个客户订单物品的数量 所以我想做的是得到每个客户在实际月份的所有财务损失,并将所有这些金额相加Mysql 请说明如何修复“组函数的无效使用”,mysql,Mysql,我尝试在SUM函数中使用嵌套的CASE语法,但从3天起就什么都不起作用了 当我检索所有求和和和嵌套条件时,代码工作得非常好 我解释: 表格合同:每个客户都有一份合同,其中有两个值:Prix_TTC物品的价格,Qac_cont客户每月必须消费的物品数量 表命令:每个客户订单物品的数量 所以我想做的是得到每个客户在实际月份的所有财务损失,并将所有这些金额相加 SELECT SUM(pertes) AS pertes_reelles FROM (SELECT c.I
SELECT
SUM(pertes) AS pertes_reelles
FROM
(SELECT
c.ID_clt,
SUM(CASE
WHEN
((co.Qac_cont - SUM(CASE
WHEN Quantite_cmd IS NULL THEN 0
ELSE Quantite_cmd
END)) * - 1) < 0
THEN
((co.Qac_cont - SUM(CASE
WHEN Quantite_cmd IS NULL THEN 0
ELSE Quantite_cmd
END)) * - 1)
ELSE 0
END) * co.Prix_TTC AS pertes
FROM
clients c
LEFT JOIN contrat co ON co.clt_ID = c.ID_clt
LEFT JOIN commande cmd ON cmd.clt_ID = c.ID_clt
AND MONTH(DATE(cmd.date_livr_cmd)) = MONTH(DATE('2019-08-30 09:23:23'))
WHERE
c.Etat_clt <> 'D'
GROUP BY c.ID_clt) AS liste
正如@BobJarvis所说,问题在于嵌套求和,所以我分解了嵌套处理,它可以工作,谢谢!新的请求:
SELECT SUM(CASE
WHEN
perte < 0
THEN
perte * - 1
ELSE 0
END) AS pertes_reelles
FROM
(SELECT
c.ID_clt, co.Prix_TTC, ((co.Qac_cont - SUM(CASE
WHEN Quantite_cmd IS NULL THEN 0
ELSE Quantite_cmd
END)) * - 1) as ecart, co.Prix_TTC * ((co.Qac_cont - SUM(CASE
WHEN Quantite_cmd IS NULL THEN 0
ELSE Quantite_cmd
END)) * - 1) as perte
FROM
clients c
LEFT JOIN contrat co ON co.clt_ID = c.ID_clt
LEFT JOIN commande cmd ON cmd.clt_ID = c.ID_clt
AND MONTH(DATE(cmd.date_livr_cmd)) = MONTH(DATE('".$today."'))
WHERE
c.Etat_clt <> 'D'
GROUP BY c.ID_clt) AS liste
你能提供更多你想要获得的信息吗?也许一个样本数据能帮上忙。好吧,让我来编辑一下。我想问题是你用co.Prix_TTC乘以总和,所以破坏了聚合。尝试使用“仅限内部选择”进行测试,看看是否可以让它选择所需内容。@Adder和c.ID\u clt仅在“仅限内部选择所有”中起作用,但当我尝试使用实际请求而不使用“*co.Prix\u TTC”时,它不起作用。这些嵌套和调用在我看来是有问题的。