Sobre um Select
Tenho a Taleba ESTOQUE e os Atributos PRODUTO, SALDO, DATA
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]
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
Curtidas 0
Respostas
Bruno Belchior
26/10/2005
se você precisa dos dois registros mais atuais taí:obs.: Firebird...
select first 2 pr, saldo, data from Tabela order by data desc
GOSTEI 0
Emerson Nascimento
26/10/2005
qual o banco de dados?
GOSTEI 0
Sistemaskrug
26/10/2005
Uso o Firebird ...
GOSTEI 0
Sistemaskrug
26/10/2005
[quote:86306ee150=´Bruno Belchior´]se você precisa dos dois registros mais atuais taí:obs.: Firebird...[/quote:86306ee150]
Não poderá ser desta forma, pois terei mais e diversos registros...
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
Bruno Belchior
26/10/2005
Não poderá ser desta forma, pois terei mais e diversos registros...
Desculpe então, porém, explique melhor o que pretende fazer...GOSTEI 0
Sistemaskrug
26/10/2005
[quote:071bacb8b7=´Bruno Belchior´]
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...
Não poderá ser desta forma, pois terei mais e diversos registros...
Desculpe então, porém, explique melhor o que pretende fazer...[/quote:071bacb8b7]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
Motta
26/10/2005
ESTOQUE e os Atributos PRODUTO, SALDO, DATA
ALGUNS BD´S NAO SUPORTAM ESTA SINTAXE
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
Sistemaskrug
26/10/2005
ESTOQUE e os Atributos PRODUTO, SALDO, DATA
ALGUNS BD´S NAO SUPORTAM ESTA SINTAXE
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
Emerson Nascimento
26/10/2005
ESTOQUE e os Atributos PRODUTO, SALDO, DATA
ALGUNS BD´S NAO SUPORTAM ESTA SINTAXE
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