【发布时间】:2015-12-22 16:03:55
【问题描述】:
这是我的代码,这是我的问题:
我想将 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
【问题讨论】:
-
你能用 SUM 和 WHERE 代替 CASE - THEN 吗?
-
不确定我是否明白你的意思。我试图弄清楚,我发现的唯一方法(虽然没有测试)是使用这个查询的结果表并使用这个 SUM 和 WHERE 创建一个新表。这会是最好的解决方案吗?
-
作为子查询代替字段之一 SELECT SUM(*) WHERE Cliente.codCanal IN('02,'03',05')。