Estou tentando criar uma consulta T-SQL para excluir dados com base nestas condições:
Encontre dados que tenham o mesmo e-mail.
Se esse usuário tiver AllLocations 'Sim' ou 'Não', exclua as entradas que não sejam de hoje (assumindo que hoje é 4/9/2025).
UserName Email AllLocations Location DateLoad John Doe [email protected] No Cerritos 4/9/2025 John Doe [email protected] No Cerritos 4/9/2025 John Doe [email protected] Yes 2/21/2025 Jane Sue [email protected] No Los Angeles 3/31/2025
Portanto, o resultado esperado é o seguinte (após a exclusão):
UserName Email AllLocations Location DateLoad
John Doe [email protected] No Cerritos 4/9/2025
John Doe [email protected] No Cerritos 4/9/2025
Jane Sue [email protected] No Los Angeles 3/31/2025
Tentei algo como bottom, mas obviamente está errado:
delete
from [table] a
inner join [table] b
on a.Email = b.Email
where
(
a.AllLocations = 'Yes'
and
b.AllLocations = 'No'
)
or
(
b.AllLocations = 'Yes'
and
a.AllLocations = 'No'
)
and
(
cast( a.DateLoad as date) = cast( GETDATE() as date)
or
cast( b.DateLoad as date) = cast( GETDATE() as date)
)