Fórum Sobre um Select #53601
26/10/2005
0
nesta tabela tenhos os seguintes DADOS
Pr-Sldo Data
1 - 10 - 01/01/2005
1 - 14 - 01/02/2005
1 - 15 - 01/03/2005
2 - 11 - 01/01/2005
2 - 13 - 01/02/2005
2 - 17 - 01/06/2005
Preciso fazer um Select que pegue o 3º e o 6º Registro... OU melhor o registro com a data Mais Atual
preciso que o resultado final fique assim:
1 - 15 - 01/03/2005
2 - 17 - 01/06/2005
Alguém me dá uma Luz, ou só se consegue fazer via Stored Procedure ???
[color=green:2014f71d84]Movido de Delphi para Interbase/Firebird[/color:2014f71d84]
Sistemaskrug
Curtir tópico
+ 0Posts
26/10/2005
Bruno Belchior
select first 2 pr, saldo, data from Tabela order by data desc
Gostei + 0
26/10/2005
Emerson Nascimento
Gostei + 0
26/10/2005
Sistemaskrug
Gostei + 0
26/10/2005
Sistemaskrug
select first 2 pr, saldo, data from Tabela order by data desc
Não poderá ser desta forma, pois terei mais e diversos registros...
Gostei + 0
26/10/2005
Bruno Belchior
Gostei + 0
27/10/2005
Sistemaskrug
Resultado do Select atual que tenho:
Pr-Sldo Data
1 - 10 - 01/01/2005
1 - 14 - 01/02/2005
[b:071bacb8b7]1 - 15 - 01/03/2005[/b:071bacb8b7]
2 - 11 - 01/01/2005
2 - 13 - 01/02/2005
[b:071bacb8b7]2 - 17 - 01/06/2005[/b:071bacb8b7]
Preciso fazer um Select que pegue o 3º e o 6º Registro... OU melhor o registro com a data Mais Atual
preciso que o resultado final fique assim:
[b:071bacb8b7]1 - 15 - 01/03/2005[/b:071bacb8b7] ----- 3º Registro
[b:071bacb8b7]2 - 17 - 01/06/2005[/b:071bacb8b7] ----- 6º Registro
Excplicando melhor:
Preciso pegar a ultima movimentação por Data do Produto, sendo assim iria pegar o 3º e 6º Registro, conforme acima...
Obrigado...
Gostei + 0
27/10/2005
Motta
SELECT * FROM ESTOQUE E1 WHERE (PRODUTO,E1.DATA) = (SELECT PRODUTO,MAX(DATA) FROM ESTOQUE E2 WHERE E2.PRODUTO = E1.PRODUTO GROUP BY PRODUTO)
ALGUNS BD´S NAO SUPORTAM ESTA SINTAXE
Gostei + 0
27/10/2005
Sistemaskrug
SELECT * FROM ESTOQUE E1 WHERE (PRODUTO,E1.DATA) = (SELECT PRODUTO,MAX(DATA) FROM ESTOQUE E2 WHERE E2.PRODUTO = E1.PRODUTO GROUP BY PRODUTO)
É pelo que Testei no Firebird não funciona esta sintaxe...
Alguém teria um exemplo, ou pederiam me dar uma dica de como fazer isto numa Stored Procedure ???
Obrigado...
Gostei + 0
27/10/2005
Emerson Nascimento
SELECT * FROM ESTOQUE E1 WHERE (PRODUTO,E1.DATA) = (SELECT PRODUTO,MAX(DATA) FROM ESTOQUE E2 WHERE E2.PRODUTO = E1.PRODUTO GROUP BY PRODUTO)
nesse caso, basta fazer:
SELECT * FROM ESTOQUE E1 WHERE E1.DATA = (SELECT MAX(E2.DATA) FROM ESTOQUE E2 WHERE E2.PRODUTO = E1.PRODUTO)
(PRODUTO,E1.DATA) e group by não são necessários porque o where do subselect já está fazendo o filtro.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)