Fórum Comandos SQL #269895
23/02/2005
0
Estou tentando fazer uma consulta no SQL 2000
Tabela: Fatura
Campos: Contrato, Nota Fiscal, Valor
registros:
[u:182ae9177d]contrato[/u:182ae9177d] , [u:182ae9177d]Nota Fiscal[/u:182ae9177d] , [u:182ae9177d]Valor[/u:182ae9177d]
122 , 00089 , 55,00
122 , 00090 , 39,00
122 , 00091 , 39,00
123 , 00092 , 349,00
123 , 00093 , 225,00
123 , 00094 , 318,00
124 , 00095 , 209,00
Quando uso no banco access:
Select Contrato, max(NotaFiscal) as NotaFiscal, Last(Valor) as Valor
From fat
Group by Contato
resultado:
[u:182ae9177d]contrato[/u:182ae9177d] , [u:182ae9177d]Nota Fiscal[/u:182ae9177d] , [u:182ae9177d]Valor[/u:182ae9177d]
122 , 00091 , 39,00
123 , 00093 , 318,00
124 , 00094 , 209,00
no SQL 2000 não existe a opçao LAST. Então usei:
Select Contrato, max(NotaFiscal) as NotaFiscal, max(Valor) as Valor
From fat
Group by Contato
resultado:
[u:182ae9177d]contrato[/u:182ae9177d] , [u:182ae9177d]Nota Fiscal[/u:182ae9177d] , [u:182ae9177d]Valor[/u:182ae9177d]
122 , 00091 , 55,00
123 , 00093 , 349,00
124 , 00094 , 209,00
Estou querendo pegar a ultima fatura de cada contrato . Mais o Valor que esta aparecendo não e o Ultimo e sim o Maximo.
Desde ja Agradeço a todos.
Iranilson
Curtir tópico
+ 0Posts
23/02/2005
Fer_nanda
Se seus registros são esses
contrato , Nota Fiscal , Valor
122 , 00089 , 55,00
122 , 00090 , 39,00
122 , 00091 , 39,00
123 , 00092 , 349,00
123 , 00093 , 225,00
123 , 00094 , 318,00
124 , 00095 , 209,00
essa select
Select Contrato, max(NotaFiscal) as NotaFiscal, Last(Valor) as Valor From fat Group by Contato
deveria trazer:
contrato , Nota Fiscal , Valor
122 , 00091 , 39,00
123 , 00094 , 318,00
124 , 00095 , 209,00
e não
contrato , Nota Fiscal , Valor
122 , 00091 , 39,00
123 , 00093 , 318,00
124 , 00094 , 209,00
Se está correto o que estou pensando vc deve retirar o max(valor), deve ficar assim
Select Contrato, max(NotaFiscal) as NotaFiscal, Valor From fat Group by Contato
Até
Gostei + 0
24/02/2005
Iranilson
Os registro devirião ser exibido assim:
contrato , Nota Fiscal , Valor
122 , 00091 , 39,00
123 , 00094 , 318,00
124 , 00095 , 209,00
isto esta correto. So que o comando que vc passou não funciona
Select Contrato, Max(notafiscal)as NotaFiscal, Valor
From Fat
Group by Contrato
Dar o seguinte erro:
Column ´Valor´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Se eu colocar o Valor em GROUP BY vai agrupar os valores tambem:
contrato , Nota Fiscal , Valor
122 , 00089 , 55,00
122 , 00091 , 39,00
123 , 00092 , 349,00
123 , 00093 , 225,00
123 , 00094 , 318,00
124 , 00095 , 209,00
e ficaria errado, eu quero assim:
contrato , Nota Fiscal , Valor
122 , 00091 , 39,00
123 , 00094 , 318,00
124 , 00095 , 209,00
Gostei + 0
24/02/2005
Andremuller
Select Contrato, Valor, max(NotaFiscal) as NotaFiscal From fat Group by Contato, Valor
Gostei + 0
25/02/2005
Iranilson
Acho que vc não entederão, eu quero que apareça o ultimo registro de cada Contrato, não quero o maximo, quero o ultimo. Ou seja o Campo Cantrato deve estar na clausula group by, mais os demais campos como valor não poderão entrar nessa clausa ja que os mesmo apresentam valores diferentes.
Ex:
O Nome da Tabela e: FAT
Os registros da Tabela são estes:
contrato , Nota Fiscal , Valor
122 , 00089 , 55,00
122 , 00090 , 39,00
122 , 00091 , 39,00
123 , 00092 , 349,00
123 , 00093 , 225,00
123 , 00094 , 318,00
124 , 00095 , 209,00
quero que fique assim:
contrato , Nota Fiscal , Valor
122 , 00091 , 39,00
123 , 00094 , 318,00
124 , 00095 , 209,00
Estou usando o Microsoft SQL Server 2000.
Gostei + 0
25/02/2005
Andremuller
select contrato, notafiscal, valor from fat fat1 where notafiscal in ( select max(notafiscal) from fat fat2 group by contrato )
a vantagem de não usar nenhuma função é que tu não fica preso a utilização de determinado banco
Gostei + 0
25/02/2005
Iranilson
Descupe ter complicado.
Obrigado mais uma vez
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)