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.
Joao Escudeiro

Joao Escudeiro

Responder

Posts

15/10/2022

Emerson Nascimento

inverta a ordem do SUM e CASE.
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'
desta forma não precisa usar o group by.
Responder

18/10/2022

Joao Escudeiro

Muito Obrigado


inverta a ordem do SUM e CASE.
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'
desta forma não precisa usar o group by.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar