首页 > 解决方案 > 如何聚合一列位?

问题描述

我有这个查询:

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(真)。

标签: sqlsql-serverselectgrouping

解决方案


我认为你想要条件聚合:

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;

推荐阅读