Consulta vendas Mês a Mês
Ola, pessoal!
Estou tentando uma consulta SQL que traga o seguinte resultado
Cliente VALOR_JANEIRO | VALOR_FEVEREIRO | VALOR_MARCO
JOAO 186.18 | 0 | 200
Mas estou sem sucesso, ja tentei até algo do tipo:
SELECT
E1.id_entidade AS Cliente,
case when MONTH(E1.data_vencimento) = 3 then sum(valor) end as VALORMARCO,
case when MONTH(E1.data_vencimento) = 5 then sum(valor) end as VALORMAIO
FROM
documento_pagar E1
WHERE
YEAR(E1.data_vencimento) in (2016)
and id_entidade = 22
GROUP BY E1.id_entidade, MONTH(E1.data_vencimento)
mas o resultado foi o seguinte:
Cliente VALORMARCO VALORMAIO
22 186.18 NULL
22 NULL 172.18
Estou tentando uma consulta SQL que traga o seguinte resultado
Cliente VALOR_JANEIRO | VALOR_FEVEREIRO | VALOR_MARCO
JOAO 186.18 | 0 | 200
Mas estou sem sucesso, ja tentei até algo do tipo:
SELECT
E1.id_entidade AS Cliente,
case when MONTH(E1.data_vencimento) = 3 then sum(valor) end as VALORMARCO,
case when MONTH(E1.data_vencimento) = 5 then sum(valor) end as VALORMAIO
FROM
documento_pagar E1
WHERE
YEAR(E1.data_vencimento) in (2016)
and id_entidade = 22
GROUP BY E1.id_entidade, MONTH(E1.data_vencimento)
mas o resultado foi o seguinte:
Cliente VALORMARCO VALORMAIO
22 186.18 NULL
22 NULL 172.18
Jailson Martins
Curtidas 0
Respostas
Robson Morais
13/07/2017
Bom dia....está no caminho certo....
creio que só faltou o else....tente assim e me fale o resultado...
creio que só faltou o else....tente assim e me fale o resultado...
SELECT E1.id_entidade AS Cliente, case when MONTH(E1.data_vencimento) = 3 then sum(valor) else 0 end as VALORMARCO, case when MONTH(E1.data_vencimento) = 5 then sum(valor) else 0 end as VALORMAIO FROM documento_pagar E1 WHERE YEAR(E1.data_vencimento) in (2016) and id_entidade = 22 GROUP BY E1.id_entidade, MONTH(E1.data_vencimento)
GOSTEI 0
Robson Morais
13/07/2017
testei aqui numa base do sqlserver..... e acho que lhe atende....
select fornecedor ,(case when (MONTH(DATA_EMISSAO) = 5) then sum(total) else 0 end) as valormaio ,(case when (MONTH(DATA_EMISSAO) = 6) then sum(total) else 0 end) as valorjunho from dbo.pedido_compra group by FORNECEDOR,MONTH(DATA_EMISSAO)
GOSTEI 0
Jailson Martins
13/07/2017
Valeu esse até traz só que ele esta trazendo varias linhas para o mesmo cliente.
Resultado: traz duas linhas para o mesmo cliente, sendo que o mesmo faturou em maio e marco
id_entidade******valormaio*****valorjunho
22*******************0.00**********186.18
33*******************0.00***********71.75
22******************172.18**********0.00
select id_entidade ,(case when (MONTH(data_vencimento) = 5) then sum(valor) else 0 end) as valormaio ,(case when (MONTH(data_vencimento) = 3) then sum(valor) else 0 end) as valormarco from documento_pagar group by id_entidade,MONTH(data_vencimento)
Resultado: traz duas linhas para o mesmo cliente, sendo que o mesmo faturou em maio e marco
id_entidade******valormaio*****valorjunho
22*******************0.00**********186.18
33*******************0.00***********71.75
22******************172.18**********0.00
GOSTEI 0
Jailson Martins
13/07/2017
Valeu pela força @Robinhodemoraes, mas acho que consegui o que queria.
;with dados as( select cast(t2.id_entidade as varchar(10))+' - '+ t2.nome as cliente ,(case when (MONTH(t1.data_vencimento) = 1) then sum(valor) else 0 end) as valorjaneiro ,(case when (MONTH(t1.data_vencimento) = 2) then sum(valor)else 0 end) as valorfevereiro ,(case when (MONTH(t1.data_vencimento) = 3) then sum(valor)else 0 end) as valormarco ,(case when (MONTH(t1.data_vencimento) = 4) then sum(valor)else 0 end) as valorAbril ,(case when (MONTH(t1.data_vencimento) = 5) then sum(valor)else 0 end) as valorMaio ,(case when (MONTH(t1.data_vencimento) = 6) then sum(valor)else 0 end) as valorJunho ,(case when (MONTH(t1.data_vencimento) = 7) then sum(valor)else 0 end) as valorJulho ,(case when (MONTH(t1.data_vencimento) = 8) then sum(valor)else 0 end) as valorAgosto ,(case when (MONTH(t1.data_vencimento) = 9) then sum(valor)else 0 end) as valorSetembro ,(case when (MONTH(t1.data_vencimento) = 10) then sum(valor)else 0 end) as valorOutubro ,(case when (MONTH(t1.data_vencimento) = 11) then sum(valor)else 0 end) as valorNovenbro ,(case when (MONTH(t1.data_vencimento) = 12) then sum(valor)else 0 end) as valorDezembro from documento_receber t1 inner join entidade t2 (NOLOCK) on t1.id_entidade = t2.id_entidade where YEAR(data_vencimento) = 2017 and t2.inativo = 0 group by MONTH(data_vencimento),t2.id_entidade,t2.nome ) select dados.cliente ,sum(dados.valorjaneiro) as Jan ,sum(dados.valorfevereiro) as Fev ,sum(dados.valormarco) as Mai ,sum(dados.valorAbril) as Abr ,sum(dados.valorMaio) as Mai ,sum(dados.valorJunho) as Jun ,sum(dados.valorJulho) as Jul ,sum(dados.valorAgosto) as Ago ,sum(dados.valorSetembro) as Setem ,sum(dados.valorOutubro) as Outubro ,sum(dados.valorNovenbro) as Nov ,sum(dados.valorDezembro) as Dez from dados group by dados.cliente
GOSTEI 0
Robson Morais
13/07/2017
nesse caso pode fazer com o subselect;
select fornecedor, sum(valormaio), sum(valorjunho) from ( select fornecedor ,(case when (MONTH(DATA_EMISSAO) = 5) then sum(total) else 0 end) as valormaio ,(case when (MONTH(DATA_EMISSAO) = 6) then sum(total) else 0 end) as valorjunho from dbo.pedido_compra group by FORNECEDOR,MONTH(DATA_EMISSAO) ) as x group by fornecedor
GOSTEI 0