Usuário com melhor resposta
Consultando qtd disponivel na tabela estoque

Pergunta
-
Boa tarde,
2 tabelas - produto / estoque
na minha tabela estoque eu tenho os campos produto, data, turno, disponivel
e na tabela produto tenho o produto, nome
produto
produto nome
001 pão
002 ovo
estoque
produto data turno disponivel
001 18/07/2010 02 50
002 20/07/2010 01 10
001 20/07/2010 01 48
001 20/07/2010 02 48
002 21/07/2010 03 30
eu preciso que o resultado de uma consulta me retorne
Resultadoproduto nome data turno disponivel002 ovo 21/07/2010 03 30001 pão 20/07/2010 02 48
ou seja... quero que me retorne o quanto eu tenho disponível de cada produtono estoque ate a ultima data.
eu fiz uma consulta que me retorna o disponível de um produto, o da ultima data,mas eu não consigo agrupar a consulta por produto - ele so me retorna 1 registro
ex:SELECT Produto, Nome, Data, Turno, Diponivel FROM estoque LEFT JOIN Produto WHEREdata = (SELECT MAX(data) from estoque) and turno = (SELECT max(turno) from estoque WHERE data = (SELECT MAX(data) from estoque))
retorna o que eu peço - o disponivel da ultima data e o ultimo turno dessa data (se tiver mais de 1 turno)
mas minha cabeça não ta conseguindo a logica para o que eu queroé a ultima movimentação de cada produto
Resultadoproduto nome data turno disponivel002 ovo 21/07/2010 03 30001 pão 20/07/2010 02 48
a ultima data, o ultimo turno da ultima data e o disponivel de cada produtoou seja... o que eu tenho de disponivel de cada produto de acordo com minhatabela estoque
Respostas
-
Joe, boa noite, segue mais um exemplo p/ sql 2005 e 2008
declare @produto as table (produto char(3), nome varchar(10)) insert into @produto values('001','pão') insert into @produto values('002','ovo') declare @estoque as table (produto char(3), data datetime, turno int, disponivel int) insert into @estoque values ('001','20100718',02,50) insert into @estoque values ('002','20100720',01,10) insert into @estoque values ('001','20100720',01,48) insert into @estoque values ('001','20100720',02,48) insert into @estoque values ('002','20100721',03,30) select x.produto, x.nome, x.data, x.turno, x.disponivel from ( SELECT E.produto, P.nome, E.data, E.turno, E.disponivel, row_number() over (partition by p.produto order by E.data desc, e.turno desc) as n FROM @estoque AS E INNER JOIN @produto AS P on E.produto = P.produto ) as x where x.n = 1
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Gustavo Maia Aguiar quinta-feira, 22 de julho de 2010 02:43
- Marcado como Resposta JoeY... _ sexta-feira, 27 de agosto de 2010 19:39
Todas as Respostas
-
Joe
segue um exemplo
declare @produto as table (produto char(3), nome varchar(10)) insert into @produto values('001','pão') insert into @produto values('002','ovo') declare @estoque as table (produto char(3), data datetime, turno int, disponivel int) insert into @estoque values ('001','20100718',02,50) insert into @estoque values ('002','20100720',01,10) insert into @estoque values ('001','20100720',01,48) insert into @estoque values ('001','20100720',02,48) insert into @estoque values ('002','20100720',03,30) select a.produto, b.nome, a.data, a.turno, c.disponivel from ( select produto, max(data) as data,max(turno) as turno--, disponivel from @estoque group by produto--,turno ) a inner join @produto b on a.produto=b.produto inner join @estoque c on a.produto=b.produto and a.data=c.data and a.turno=c.turno
Att.
Marcelo Fernandes
MCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Sugerido como Resposta Gustavo Maia Aguiar quinta-feira, 22 de julho de 2010 02:43
-
-
-
Joe, boa noite, segue mais um exemplo p/ sql 2005 e 2008
declare @produto as table (produto char(3), nome varchar(10)) insert into @produto values('001','pão') insert into @produto values('002','ovo') declare @estoque as table (produto char(3), data datetime, turno int, disponivel int) insert into @estoque values ('001','20100718',02,50) insert into @estoque values ('002','20100720',01,10) insert into @estoque values ('001','20100720',01,48) insert into @estoque values ('001','20100720',02,48) insert into @estoque values ('002','20100721',03,30) select x.produto, x.nome, x.data, x.turno, x.disponivel from ( SELECT E.produto, P.nome, E.data, E.turno, E.disponivel, row_number() over (partition by p.produto order by E.data desc, e.turno desc) as n FROM @estoque AS E INNER JOIN @produto AS P on E.produto = P.produto ) as x where x.n = 1
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Gustavo Maia Aguiar quinta-feira, 22 de julho de 2010 02:43
- Marcado como Resposta JoeY... _ sexta-feira, 27 de agosto de 2010 19:39
-
-
-
-