![](/img/trans.png)
[英]SQL Select CASE-WHEN - How to remove formatting from telephone numbers
[英]How to sum values from different rows in SQL that have the same argument in CASE-WHEN
這是我的代碼,這是我的問題:
我想將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
我只想顯示這些值的總和(552 + 744 + 1223)的1行。 我該如何解決?
我嘗試使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.