Fórum Case com SUM SQL SERVER 2014 #618824

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:
1
2
3
4
5
6
7
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

Gostei + 0

18/10/2022

Joao Escudeiro

Muito Obrigado


inverta a ordem do SUM e CASE.
assim:
1
2
3
4
5
6
7
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.

Ler Mais...

Responder

Gostei + 0

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

Aceitar