Somando Campo - Trigger
21/10/2013
0
é a primeria vez que posto aqui, espero poder aprender bastante com voces, e ensinar um pouco do que sei =)
Bom ... vamos la ...
Estou com um probleminha.
Tenho uma tabela SAIDA_PRODUTO, onde faço a inserção dos produtos solicitados, nela contem os seguintes campos: data da solicitação, nome do setor solicitante, o tipo do produto e a quantidade.
Então, ai é que entra problema.
Toda vez que é solicitado um produdo, ocorre uma duplicidade de setor.
Ai criei uma trigger, que me informa todos os dados acima.
Isso vai para um relatório mensal, o relatório é constituído por uma view que contem inner join com 3 tabelas, fiz algumas alterações na view, depois da criação da trigger, estaria tudo perfeito, se não fosse o caso da trigger me retornar várias vezes, igual estava anteriormente.
Eu queria apenas que pegasse a setor solicitante e somasse a quantidade do produto solicitado por ele.
Simone
Posts
25/10/2013
Alex Lekao
vou criar um banco de testes aqui e ver o que consigo.
25/10/2013
Simone
insert into tb_setor values('TI'),('RH'),('Adm') insert into tb_estoque values( 1,'LEXMARK C792X1YG', 5, 10), -- Tonner Colorido ( 1,'LEXMARK LEXMARK X654X11L', 5, 10) -- Tonner Preto insert into tb_TIPO_PRODUTO values ('Tonner') insert into tb_controle_estoque values (1, getdate(), 1, 1)
25/10/2013
Alex Lekao
ta dando erro na criacao da view, acho que faltou alguma coisa...
estou vendo o que pode ser e ajustando para ver se consigo cria-la...
acho que o problema esta na CTE, mas estou vendo o que consigo.
25/10/2013
Alex Lekao
se quiser, e ficar mais facil para vc adicione o meu msn(skype), alex_linhares_es@yahoo.com.br, talvez assim a gente consigo ir testando e ajustando mais rapidamente. rsrsr
25/10/2013
Alex Lekao
e aqui tao me parando toda hora nao consigo dar continuidade na linha de raciocinio. rsrsr
25/10/2013
Jefferson Santos
25/10/2013
Simone
Alex, tenta esse
VIEW [dbo].[v_Estoque] as with TONNER as ( SELECT case when isnull (c.setor, ' ') = ' ' then p.setor when isnull (p.setor, ' ') = ' ' then c.setor else ' ' end setor, p.Preto, c.Colorido FROM ( SELECT --substring(NOME_PRODUTO, 15, 1), sa.DATA_SAIDA, dir.NOME_SETOR setor, SUM(QUANTIDADE) Colorido FROM tb_PRODUTO pr inner join tb_controle_estoque sa ON pr.ID_PRODUTO = sa.ID_PRODUTO inner join tb_setor dir ON dir.ID_SETOR = sa.SETOR WHERE substring(pr.NOME_PRODUTO, 15, 1)in('y', 'C', 'M') GROUP BY dir.NOME_SETOR,sa.DATA_SAIDA ) C full join ( SELECT sa.DATA_SAIDA, dir.NOME_SETOR setor, SUM(QUANTIDADE) Preto FROM tb_PRODUTO pr inner join tb_controle_estoque sa ON pr.ID_PRODUTO = sa.ID_PRODUTO inner join tb_setor dir ON dir.ID_SETOR = sa.ID_SETOR WHERE substring(NOME_PRODUTO, 15, 1) = 'K' or substring(NOME_PRODUTO, 16,1) = 'L' GROUP BY DIR.NOME_SETOR,sa.DATA_SAIDA ) P ON C.setor = P.setor ) SELECT setor , isnull (preto, 0) Preto, isnull (colorido,0) Colorido, isnull (preto, 0) + isnull (colorido,0) Total FROM TONNER
Vou te add no skype, assim que lembrar minha senha rs
25/10/2013
Jefferson Santos
o que você quer?
Vou montar o select buscando as informações e depois você cria o que quiser com eles.
Pode ser?
25/10/2013
Simone
Preciso gerar um relatorio mensal, que me informe a qtde de produto que cada setor solicitou, no caso de cima usei o tonner, temos tonner preto e colorido.
Estava me retornando duplicado, por ex.
O Setor de TI solicitou 1 tonner preto e 1 colorido, apareceu duas vezes, preciso que apareça
1 na coluna Preto e 1 na coluna Colorido, totalizando 2.
Isso com a ajuda do Alex consegui resolver, maaas agora, qdo insiro o tonner colorido, o setor some da coluna, aparece somente a qtde.
Obs: Isso só acontece com o tonner colorido.
25/10/2013
Alex Lekao
eu consegui criar a View, mas tive que fazer alteracoes no codigo, pq tem duas tabelas que nao existem no banco e a view esta fazendo mencao nelas, a tb_produto, e a tb_saida.
com essa que vc postou agora eu tive que alterar novamente a tb_produto.
25/10/2013
Jefferson Santos
Esta consulta abaixo me retornou exatamente o que você queria com os insert que você colocou disponível.
Verifique agora no seu banco.
SELECT s.nome_setor , (CASE WHEN c.id_produto = '1' THEN 'Preto' ELSE 'Colorido' END )as Produto, quantidade = sum(quantidade) FROM tb_controle_estoque c INNER JOIN tb_setor s on s.id_setor = c.id_setor WHERE C.ID_SETOR = 1 GROUP BY s.nome_setor, (CASE WHEN c.id_produto = '1' THEN 'Preto' ELSE 'Colorido' END )
25/10/2013
Jefferson Santos
select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque where id_setor = 1 GROUP BY id_setor, id_produto
28/10/2013
Simone
select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque where id_setor = 1 GROUP BY id_setor, id_produto
Oi Jefferson, não é bem isso que eu preciso.
Desse jeito, me retornou assim ..
SETOR - Produto - Qtde
Adm - Colorido - 0
28/10/2013
Simone
select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque where id_setor = 1 GROUP BY id_setor, id_produto
Esse me retorna assim ..
ID_SETOR - ID_PRODUTO - QTDE
1 - 10 - 0
Clique aqui para fazer login e interagir na Comunidade :)