DUVIDAS EM CLAUSULA SQL

LCSD 19/08/2010 15:32:57
#350716
Pessoal, boa tarde....


Bom, eu tenho uma tabela com a seguinte estrura:

CodAluno
Data
HoraEntrada
(dentre outros campos que não irão me interessar)

Nesta tabela, eu estou colocando TODAS as passagens dos alunos da academia, tanto ENTRADA como SAÍDA....... Até aí, está funcionando muito bem o meu sistema.
Só que eu agora preciso fazer um relatório com a seguinte condição:

Quero pegar TODOS os alunos que passaram pela academia no período de 01/07/2010 a 31/07/2010.
Só que eu quero neste SELECT que me apareça SOMENTE o primeiro acesso deste aluno na academia, e não TODOS os acessos dele neste período.

Como que eu faço a cláusula SQL para pegar TODOS os alunos nesta minha tabela PASSAGEM, onde eu quero que apareça para mim somente o primeiro acesso de cada aluno nesta minha cláusula...... Será que conseguiram entender???? rsrs



Abraços e conto com a ajuda de vocês......
MARCIO.ROGERIO 19/08/2010 16:44:35
#350727
Olá,

talvez isto funcione :

select min(data), data, codaluno, horaentrada from tabela
group by data, codaluno, horaentrada

Até,

Rogério.
LCSD 19/08/2010 16:53:59
#350730
Caro Marcio, não funcionou.....


O que eu quero é o seguinte:
Tenho a tabela com estes dados

CodAluno Data Hora
10 01/07/2010 15:00
22 01/07/2010 15:03
25 01/07/2010 18:00
50 01/07/2010 20:00
10 02/07/2010 14:00
20 02/07/2010 18:00
25 03/07/2010 09:00


O que eu quero é fazer um SELECT com estes dados, para me trazer os seguintes dados:

CodAluno Data Hora
10 01/07/2010 15:00
22 01/07/2010 15:03
25 01/07/2010 18:00
50 01/07/2010 20:00
20 02/07/2010 18:00

Obrigado
F001E 19/08/2010 17:07:15
#350732
acho q se vc tivesse um campo Sequencia de Lançamento nessa Tabela Passagem...daria certo...
pq dai vc fazia um Select entre Periodos com a Menor Sequencia de Cada Aluno...dai sim vc Teria o Primeiro Acesso...
LCSD 19/08/2010 17:15:32
#350734
Caro FERNANDO,

Mesmo se eu tivesse esa tal sequencia, seria muito mais complicado e deixaria o sistema um pouco mais [Ô]lento[Ô], pois teria que fazer mais um SELECT na tabela para poder ver qual a seguencia, adicionar 1 e gravar.....
Não pude fazer isso, então a solução foi esta mesma....

Eu sei que dá pra matar em uns 2 selects este problema, mas não estou conseguindo bolar isso.... Mas sei sim que é possível e bem simples....
ONBASS 19/08/2010 17:25:54
#350735
tenta bolar com ..

SELECT DISTINCT no codigo e data menor..

agora to meio ocupado...senao tentava
F001E 19/08/2010 17:47:30
#350737
mas nesse caso coloca o Campo como Autonumerador..ou seja o Banco Soma + 1...fazendo isso não fica Lento..Agora Select Max e gravar...ae fica Lento...concordo com vccc
MARCELO.TREZE 19/08/2010 20:27:12
#350747
Resposta escolhida
Eu acredito que o MARCIO ROGéRIO matou a charada acredito que a idéia dele resolva mudando apenas um campo assim

SELECT CodAluno ,Data ,MIN(HoraEntrada) FROM tabela
ORDER BY codaluno, Data, HoraEntrada



JCARLOS 20/08/2010 14:05:48
#350802
Olá LCSD é possível sim.
[Ô]Select CodAluno,min(data) as Data, min(HoraEntrada) as HoraEntrada from Passagem where data>=convert(datetime,[ô]2010-07-31[ô],102) AND data<convert(datetime,[ô]2010-08-01[ô],102) group by data[Ô]
No exemplo acima, o comando é pro sqlServer, se for pra acces é só ajustar o formato da data, ok?
Abraços.
Tópico encerrado , respostas não são mais permitidas