Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

arthur.kasper

Select

Recommended Posts

Boa Noite Pessoal.

 

Tenho um SELECT onde estou comparando uma tabela onde somo as quantidades vendidas de um determinado produto com uma tabela onde tenho todos os meses.

 

Nesse SELECT quero q me retorno o cod do produto, qtde vendida do mês, cod do mês, de um período estipulado no SELECT, porém, mesmo que o produto não tenha venda nesse mês deve retornar com quantidade 0 no campo de quantidade vendida.

 

Por em quanto meu SELECT está assim, dessa forma ele coloca a qtde total no qtde_carprod em todos os meses, sendo que para esse item ele só teve venda no mês 9.

 

Select Distinct(p.produtos_id_prod), -- cod do produto
       sum(p.qtde_carprod), -- quantidade vendida
       l.id_mes -- cod do mês
       From carrinho_prod p
Join mes l On l.id_mes in (7,8,9,10,11,12) 
Where  p.produtos_id_prod = 16 -- cod de um produto                                            
And Year(datacompra_carprod) = 2010 
GROUP by p.produtos_id_prod,Month(datacompra_carprod),l.id_mes,p.qtde_carprod

Eu até consegui pegar somente o mês q teve venda, mas dai ele só lista aquele mês e não todos os que gostaria (l.id_mes in (7,8,9,10,11,12))

 

Atualmente a consulta retorna isso:

========================================================
produtos_id_prod  sum(p.qtde_carprod) id_mes
16	          5	              7
16	          5	              8
16	          5	              9
16	          5	              10
16	          5	              11
16	          5	              12
========================================================

E gostaria q retornasse isso:

 

Atualmente a consulta retorna isso:

========================================================
produtos_id_prod  sum(p.qtde_carprod) id_mes
16	          0	              7
16	          0	              8
16	          5	              9
16	          0	              10
16	          0	              11
16	          0	              12
========================================================

Espero q tenham entendido e se alguem souber a resposta agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto se resolve com o uso de outer join e a function coalesce.

 

Outra solução é via union.

 

Select Distinct(p.produtos_id_prod), -- cod do produto
       sum(p.qtde_carprod), -- quantidade vendida
       l.id_mes -- cod do mês
       From carrinho_prod p
Join mes l On l.id_mes in (7,8,9,10,11,12) 
Where  p.produtos_id_prod = 16 -- cod de um produto                                            
And Year(datacompra_carprod) = 2010 
GROUP by p.produtos_id_prod,Month(datacompra_carprod),l.id_mes,p.qtde_carprod
union all
Select Distinct(p.produtos_id_prod), -- cod do produto
       0, -- quantidade vendida
       l.id_mes -- cod do mês
       From carrinho_prod p
Where  p.produtos_id_prod = 16 -- cod de um produto                                            
And Year(datacompra_carprod) = 2010 
and not exists (select null
                from mes 
                where <ligação mes x carrinho_prod >
                and l.id_mes in (7,8,9,10,11,12) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.