sql - 如何聚合一列位?
问题描述
我有这个查询:
SELECT
MAX(P.Descricao) AS Name,
SUM(FC.Credito) AS Sales,
CAST(CASE
WHEN FC.Troco = 1 THEN SUM(FC.Debito)
ELSE 0
END AS decimal(10, 2)) AS Purchases
FROM
FluxoCaixa FC
INNER JOIN
Pagamento P ON FC.ID_Pagamento = P.Pagamento
我收到此错误:
列 'FluxoCaixa.Troco' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中
我知道返回错误是因为该列FC.Troco
未聚合,但是如何聚合其值为位的列?
在 中CASE-WHEN
,我希望SUM(FC.Debito)
大小写FC.Troco
为 1(真)。
解决方案
我认为你想要条件聚合:
SELECT MAX(P.Descricao) AS Name, SUM(FC.Credito) AS Sales,
SUM(CASE WHEN FC.Troco = 1 THEN FC.Debito ELSE 0 END) AS Purchases
FROM FluxoCaixa FC INNER JOIN
Pagamento P
ON Fc.ID_Pagamento = P.Pagamento;
推荐阅读
- scala - 如何简化期权处理
- javascript - JS:如何改变同一个类的多个元素的样式
- python - 无法在 kv 文件中调用 py 文件中定义的 self 变量
- c# - 将数据表(多行)添加到 ms-access 一次,无需循环 C#
- python - 完全写出这个字典理解的适当语法是什么?
- javascript - 如何确保承诺已解决
- arrays - 有人可以澄清这是要我做什么吗?
- spring - Spring @ConfiurationProperties 扩展毛的问题
- django - Docker 拉取 Django 镜像并运行容器
- javascript - 如何在 javascript 命令 (.innerHTML) 中编辑变量名?