这是我的代码,这是我的问题:
我有三个不同的 codCanal 值,我想将其命名为 Rota(02、03 和 05)。但是当我运行此查询时,我得到了该值的三个不同行。像这样的东西:
Ano | Mes | Canal | Volume
2015 | 01 | AS | 4423
2015 | 01 | Rota | 552
2015 | 01 | Rota | 744
2015 | 01 | Rota | 1223
2015 | 01 | HSA | 6510
我只想显示 1 行这些值的总和 (552 + 744 + 1223)。我该如何解决这个问题?
我尝试使用 SUM(CASE WHEN)
但它返回一个新列,这不是我想要的。
谢谢。
SELECT
Vendas.datAno AS Ano,
Vendas.datMes AS Mes,
CASE WHEN Cliente.codCanal IN ('01') THEN 'AS'
WHEN Cliente.codCanal IN ('02','03','05') THEN 'Rota'
WHEN Cliente.codCanal IN ('08') THEN 'HSA'
END AS Canal,
ROUND(SUM(Vendas.vlrVolumeLiquido),0) AS Volume
FROM
tblDadMetaRealCliente Vendas
INNER JOIN
tblCadOrganizacaoVenda OV
ON Vendas.codOrganizacaoVenda = OV.codOrganizacaoVenda
INNER JOIN
tblCadCliente Cliente
ON Vendas.codCliente = Cliente.codCliente
INNER JOIN
categoria_simulador_nova Catsim
ON Vendas.codMaterial = Catsim.codMaterial
WHERE
Catsim.Catsim IN ('CHESTER LANCHE') AND
Vendas.datAno IN ('2014', '2015') AND
Cliente.codCanal IN ('01', '02', '03', '05', '08')
GROUP BY
Vendas.datAno,
Vendas.datMes,
Cliente.codCanal
ORDER BY
Vendas.datAno,
Vendas.datMes,
Cliente.codCanal
最佳答案
您需要在 GROUP BY
子句中使用转换后的列名称,以便它将它们合并为一组。
GROUP BY Vendas.datAno, Vendas.datMes, Canal
ORDER BY Vendas.datAno, Vendas.datMes, Canal
以上是针对MySQL的。在 SQL-Server 中,您需要将查询移至子查询中。
SELECT Ano, Mes, Canal, SUM(Volume) AS Volume
FROM (your query) AS subquery
GROUP BY datAno, datMes, Canal
关于mysql - 如何对 SQL 中 CASE-WHEN 中具有相同参数的不同行的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419857/