Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma tabela com os seguintes campos:
| nome_prod | cod_prod | status |
+-----------+------------+--------------+
| mouse | 2 | estoque |
+-----------+------------+--------------+
| mouse | 2 | estoque |
+-----------+------------+--------------+
| mouse | 2 | estoque |
+-----------+------------+--------------+
| teclado | 4 | vendido |
+-----------+------------+--------------+
| teclado | 4 | vendido |
+-----------+------------+--------------+
| HD | 7 | cotacao |
+-----------+------------+--------------+
Quero que some todos que estao em estoque, os demais apenas liste com quantidade igual a zero:
| nome_prod | cod_prod | quantidade |
+-----------+------------+--------------+
| mouse | 2 | 3 |
+-----------+------------+--------------+
| teclado | 4 | 0 |
+-----------+------------+--------------+
| HD | 7 | 0 |
+-----------+------------+--------------+
Usei a seguinte instução SQL, mas ela só me retorna os produtos que estão em estoque:
SELECT nome_prod, COUNT(cod_prod) Quantidade
FROM estoque
WHERE status='estoque'
GROUP BY (cod_prod)
Sou novato em SQL, quem puder me ajudar
Que facil, era isso mesmo que eu precisava.
Poderia explicar o codigo so para que eu entenda e nao pergunte mais.
Obrigado.
sum((case when status='estoque' then 1 else 0 end))
se for 'estoque retorna 1 senão zero
depois se soma isto , daí o resultado pedido
Nesta mesma pesquisa preciso agrupar por mais dois campos:
'Marca' e 'Valor' como faria a consulta SQL
Só colocar as colunas a mais que se quer agrupar.
SELECT nome_prod, marca , valor , sum((case when status='estoque' then 1 else 0 end)) Quantidade
FROM estoque
GROUP BY nome_prod, marca , valor
>
SELECT nome_prod, marca, valor, sum((case when status='estoque' then 1 else 0 end)) Quantidade
FROM estoque
GROUP BY nome_prod, marca, valor
isso se você não for somar o valor, se for somar o valor, pões sum(valor) no lugar de valor e tira ele do group by
SELECT nome_prod, sum((case when status='estoque' then 1 else 0 end)) Quantidade
FROM estoque
GROUP BY nome_prod