簡體   English   中英

如何在CASE-WHEN中對SQL中具有相同參數的不同行中的值求和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM