-1
votes

Sélection des enregistrements qui ont des duplicats sur certaines colonnes

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


0 commentaires

5 Réponses :


2
votes

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 
)


1 commentaires

Merci pour toutes les suggestions. Je vais tout essayer et sélectionner la réponse la plus appropriée.



5
votes

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;


0 commentaires

0
votes
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
   )
;

1 commentaires

Le code que des réponses ne sont généralement pas géniales.



0
votes

avec où existe et un code de test: xxx


0 commentaires

0
votes

Une autre option à l'aide de la clause avec des cravates et un peu de plaisir avec le signe () des résultats. xxx

retourne xxx


0 commentaires