Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

EXCLUINDO REGISTROS - SQL

Olá pessoal,

Tenho uma tabela com registros, conforme abaixo:

[COD_CLIENTE ] [COD_VISITA] [DATA_VISITA]

 1450              1        15/01/2018
 1450              2        20/01/2018
 1450              3        30/01/2018
 1452              1        22/01/2018
 1452              2        05/02/2018
 1452              3        10/02/2018

Estou querendo fazer um comando que exclua as visitas anteriores à última, ou seja, quero que fique para cada cliente o registro apenas da última visita. A tabela com os registros restantes deve ficar conforme abaixo:

[COD_CLIENTE] [COD_VISITA] [DATA_VISITA]

 1450           3         30/01/2018
 1452           3         10/02/2018
2 respostas
solução

Uma das soluções seria criar uma tabela temporária com a última visita de todos os clientes. Na tabela de visitas, você poderia criar um campo numérico (auxiliar) chamado "flag", que por padrão seria nulo. Você marcaria com "1" a última visita, e apagaria tudo o que estivesse nulo.

select cod_cliente, max(cod_visita) as ultima
into tmp_visitas
from visitas
GROUP BY cod_cliente

update visitas set flag = 1
from visitas as T1, tmp_visitas as T2
WHERE T1.cod_cliente = T2.cod_cliente
and T1.cod_visita = T2.cod_visita

delete from visitas where flag is null
drop table tmp_visitas
update visitas set flag = null

Para praticar, faça uma cópia da tabela.

Daniel Bins,

Era exatamente isso que tava querendo, fiz os comandos e deu certinho! Muito obrigado pela ajuda. Você foi 10!!