Case com SUM SQL SERVER 2014
14/10/2022
0
Boa tarde,
Preciso fazer uma consulta que somando os totais de um período, porém o resultado sai em várias linhas por ter que usar o group by, vou colocar como estou fazendo e como preciso enxergar o resultado.
SELECT
CASE WHEN v.DataEfetivacao is not null THEN
SUM(VlrTotalLiquido)
END as VlrtotalLiquidoEfetivado,
CASE WHEN v.DataEfetivacao is null THEN
SUM(VlrTotalLiquido)
END as VlrtotalLiquidoNaoEfetivado
FROM
Vendas v
WHERE
v.Data Between ''01-09-2022'' and ''30-10-2022''
GROUP BY
v.DataEfetivacao
Resultado
VlrtotalLiquidoEfetivado VlrtotalLiquidoNaoEfetivado
1555,11 218,32
53,66 null
564,58 null
20,00 null
==================================================
Preciso que sai somente em uma linha
VlrtotalLiquidoEfetivado VlrtotalLiquidoNaoEfetivado
2.193,35 218,32
Obrigado.
Preciso fazer uma consulta que somando os totais de um período, porém o resultado sai em várias linhas por ter que usar o group by, vou colocar como estou fazendo e como preciso enxergar o resultado.
SELECT
CASE WHEN v.DataEfetivacao is not null THEN
SUM(VlrTotalLiquido)
END as VlrtotalLiquidoEfetivado,
CASE WHEN v.DataEfetivacao is null THEN
SUM(VlrTotalLiquido)
END as VlrtotalLiquidoNaoEfetivado
FROM
Vendas v
WHERE
v.Data Between ''01-09-2022'' and ''30-10-2022''
GROUP BY
v.DataEfetivacao
Resultado
VlrtotalLiquidoEfetivado VlrtotalLiquidoNaoEfetivado
1555,11 218,32
53,66 null
564,58 null
20,00 null
==================================================
Preciso que sai somente em uma linha
VlrtotalLiquidoEfetivado VlrtotalLiquidoNaoEfetivado
2.193,35 218,32
Obrigado.
Joao Escudeiro
Curtir tópico
+ 0
Responder
Posts
15/10/2022
Emerson Nascimento
inverta a ordem do SUM e CASE.
assim:
desta forma não precisa usar o group by.
assim:
SELECT SUM(CASE WHEN not (v.DataEfetivacao is null) THEN v.VlrTotalLiquido END) VlrtotalLiquidoEfetivado, SUM(CASE WHEN v.DataEfetivacao is null THEN v.VlrTotalLiquido END) VlrtotalLiquidoNaoEfetivado FROM Vendas v WHERE v.Data Between '01-09-2022' and '30-10-2022'
Responder
18/10/2022
Joao Escudeiro
Muito Obrigado
inverta a ordem do SUM e CASE.
assim:
desta forma não precisa usar o group by.
assim:
SELECT SUM(CASE WHEN not (v.DataEfetivacao is null) THEN v.VlrTotalLiquido END) VlrtotalLiquidoEfetivado, SUM(CASE WHEN v.DataEfetivacao is null THEN v.VlrTotalLiquido END) VlrtotalLiquidoNaoEfetivado FROM Vendas v WHERE v.Data Between '01-09-2022' and '30-10-2022'
Responder
Clique aqui para fazer login e interagir na Comunidade :)