Problemas com Sql
:lol:
O banco de dados é paradox
O que quero é uma sql(inserida através de uma query) que me retorne apenas os registro o que obedeçam a condição da data ser a maior, portanto deve ser utilizado com a função Max(), porém sei só como aparecer apenas um campo, quanto a ordem não é importante pois só há uma data maior, não tem como ter mais de uma data maior, a não ser que hajam mais de um registro obedecendo os critérios, mas mesmo assim por exemplo terei dois ou mais registros mas com a mesma data (não é necessária a ordenação de uma data repetida!)
o que estou tentando fazer é pegar o último serviço de um cliente, mas os serviços podem ser cadastrados fora de ordem ou seja o da data maior pode ter sido digitado antes, por tanto preciso que me retorne somente os registros que a data seja maior, será que fui claro ?
select MAX(saida) as Saida from servicos
where nom_cli like ´EMRESA¬´
no exemplo acima aparece somente o registro que tem a data maior exatamente como eu quero, porém gostaria que os outros campos aparecessem também(Descricao, nom_cli, entrada, pagto, valor), pois da forma que o sql foi montado somente aparece o campo Saida
Se eu colocar
select MAX(saida) as Saida, nom_cli, descricao, pagto, valor from servicos
where nom_cli like ´EMRESA¬´
é exibido a seguinte mensagem de erro:
GROUP BY is required when both aggregate and non-aggregate fields are used in result set.
se coloco
select A.*, MAX(saida) from Servicos A
where A.nom_cli like ´ADEMILTON¬´
a mesma mensagem é exibida, o que eu poderia estar fazendo de errado ?
O banco de dados é paradox
O que quero é uma sql(inserida através de uma query) que me retorne apenas os registro o que obedeçam a condição da data ser a maior, portanto deve ser utilizado com a função Max(), porém sei só como aparecer apenas um campo, quanto a ordem não é importante pois só há uma data maior, não tem como ter mais de uma data maior, a não ser que hajam mais de um registro obedecendo os critérios, mas mesmo assim por exemplo terei dois ou mais registros mas com a mesma data (não é necessária a ordenação de uma data repetida!)
o que estou tentando fazer é pegar o último serviço de um cliente, mas os serviços podem ser cadastrados fora de ordem ou seja o da data maior pode ter sido digitado antes, por tanto preciso que me retorne somente os registros que a data seja maior, será que fui claro ?
select MAX(saida) as Saida from servicos
where nom_cli like ´EMRESA¬´
no exemplo acima aparece somente o registro que tem a data maior exatamente como eu quero, porém gostaria que os outros campos aparecessem também(Descricao, nom_cli, entrada, pagto, valor), pois da forma que o sql foi montado somente aparece o campo Saida
Se eu colocar
select MAX(saida) as Saida, nom_cli, descricao, pagto, valor from servicos
where nom_cli like ´EMRESA¬´
é exibido a seguinte mensagem de erro:
GROUP BY is required when both aggregate and non-aggregate fields are used in result set.
se coloco
select A.*, MAX(saida) from Servicos A
where A.nom_cli like ´ADEMILTON¬´
a mesma mensagem é exibida, o que eu poderia estar fazendo de errado ?
Carlosdarienzo
Curtidas 0
Respostas
Carlosrm
30/12/2003
calosdarienzo,
select nom_cli, descricao, pagto, valor, MAX(saida) as Saida
from servicos
Group By nom_cli, descricao, pagto, valor
carlosrm
select nom_cli, descricao, pagto, valor, MAX(saida) as Saida
from servicos
Group By nom_cli, descricao, pagto, valor
carlosrm
GOSTEI 0
Adilsond
30/12/2003
select t1.saida, t1.nom_cli, t1.descricao, t1.pagto, t1.valor from servicos t1 where t1.saida = (select max(t2.saida) from servicos t2 where t2.nom_cli = t1.nom_cli) and t1.nom_cli like "EMRESA¬"
GOSTEI 0