Como fazer Distinct de apenas alguns campos e outros não?
Olá,
tenho uma tabela no SQL Server 2005 que tem os seguintes dados:
ID do pagamento
Data do pagamento
ID do aluno
forma de pagamento
acontece que ocorrem registros de pagamento "quase" duplicados.. veja:
REGISTRO 1:
ID do pagamento = 12
Data do pagamento = "08/02/2010 16:38"
ID do aluno = 17
forma de pagamento = "Visa"
REGISTRO 2:
ID do pagamento = 13
Data do pagamento = "08/02/2010 16:40"
ID do aluno = 17
forma de pagamento = "Visa"
Veja que os dois registros são iguais, muda apenas a hora do pagamento (2 minutos depois) e o ID do pagamento. Então, para fazer um select que agrupe esses dois registros, eu estou fazendo o seguinte:
SELECT DISTINCT ID_do_aluno, CAST(CONVERT(VARCHAR(10), data_do_pagamento, 112) AS DATETIME) AS 'DataSemHora', forma_de_pagamento from PAGAMENTOS order by DataSemHora desc
E é aí que vem o problema... veja que para agrupar eu precisei converter o campo de data (datetime) para apenas data, eliminando o horário da compra, só que fazendo isso, na hora de ordenar (order by) o SQL ordena os registros por data mas não sabe a que horas o pagamento foi feito, deixando os registros todos fora da ordem correta. O cliente precisa saber a ordem em que foram feitos os pagamentos naquele dia.
Tem como resolver isso?
Tentei algo parecido com isso:
SELECT DISTINCT(ID_do_aluno, CAST(CONVERT(VARCHAR(10), data_do_pagamento, 112) AS DATETIME) AS 'DataSemHora', forma_de_pagamento), data_do_pagamento from PAGAMENTOS order by data_do_pagamento desc
Mas não deu certo.
Valeu!!
Renan
Discussão (3)
Carregando comentários...