J'ai les données suivantes: -
LogID Tstamp eCode eOrder 14281889 2019-01-04 08:14:52.000 120 0 14281890 2019-01-04 08:14:52.000 120 0
5 Réponses :
Obtenez les DUPS avec Exist CODE>: select * from tablename t
where exists (
select 1 from tablename tt
where tt.Tstamp = t.Tstamp and tt.eCode = t.eCode and tt.eOrder = t.eOrder and tt.LogID <> t.LogID
)
Merci pour toutes les suggestions. Je vais tout essayer et sélectionner la réponse la plus appropriée.
Le moyen le plus simple serait d'utiliser un CTE pour obtenir un compte:
WITH CTE AS(
SELECT LogID, TStamp, eCode, eOrder,
COUNT(LogID) OVER (PARTITION BY TStamp, eCode, eOrder) AS DupeCount
FROM {YourTable}) --Replace {TableName} with appropriate table name.
SELECT LogID, TStamp, eCode, eOrder
FROM CTE
WHERE DupeCount > 1;
select
LogID,
Tstamp,
eCode,
eOrder
from
XXX
where
Tstamp + '/' + eCode + '/' + eOrder in
(
select
Tstamp + '/' + eCode + '/' + eOrder
from
XXX
group by
Tstamp + '/' + eCode + '/' + eOrder
having
count(*) > 1
)
;
Le code que des réponses ne sont généralement pas géniales.
avec où existe code> et un code de test:
Une autre option à l'aide de la clause retourne strong> p> avec des cravates code> et un peu de plaisir avec le signe () code> des résultats.