Comandos SQL
Ola!
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.
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
Curtidas 0
Respostas
Fer_nanda
23/02/2005
Não entendi sua dúvida.
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
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
Até
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
Iranilson
23/02/2005
Oi Fer_nanda
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
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
Andremuller
23/02/2005
todas as colunas que não fazem parte da agregação devem sempre estar na cláusula group by. Inclua valor nessa cláusula
Select Contrato, Valor, max(NotaFiscal) as NotaFiscal From fat Group by Contato, Valor
GOSTEI 0
Iranilson
23/02/2005
Ola Pessoal
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.
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
Andremuller
23/02/2005
Pelo que entendi o campo nota fiscal é único. Então daria pra fazer da seguinte forma
a vantagem de não usar nenhuma função é que tu não fica preso a utilização de determinado banco
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
Iranilson
23/02/2005
Valeu! Perfeito.
Descupe ter complicado.
Obrigado mais uma vez
Descupe ter complicado.
Obrigado mais uma vez
GOSTEI 0