Überprüfen Sie doppelte datasätze für bestimmte Zeile in SQL server

Ich möchte überprüfen, ob es einen doppelten datasatz für diese Zeile gibt. bedeutet nach Tabellenstruktur

Wenn (C1_CADNO = C2_CADNO oder C1_CADNO = C3_CADNO oder C2_CADNO = C3_CADNO) dann diesen datasatz anzeigen

Und meine Tabelle mit 10 Spalten wie C1_CADNO ….. C10_CADNO

Meine Tabellenstruktur

   

Verschieben Sie es in die WHERE Klausel:

 SELECT t.* FROM TableName t WHERE ( C1_CADNO = C2_CADNO OR C1_CADNO = C3_CADNO OR C2_CADNO = C3_CADNO ) 

aber mein Tisch mit 10 Spalten wie C1_CADNO, C2_CADNO, C3_CADNO ….. C10_CADNO –

Dann ist diese SQL für Sie gemacht:

 SELECT t.* FROM TableName t WHERE ( t.C1_CADNO = t.C2_CADNO OR C1_CADNO = C3_CADNO OR C1_CADNO = C4_CADNO OR C1_CADNO = C5_CADNO OR C1_CADNO = C6_CADNO OR C1_CADNO = C7_CADNO OR C1_CADNO = C8_CADNO OR C1_CADNO = C9_CADNO OR C1_CADNO = C10_CADNO OR C2_CADNO = C3_CADNO OR C2_CADNO = C4_CADNO OR C2_CADNO = C5_CADNO OR C2_CADNO = C6_CADNO OR C2_CADNO = C7_CADNO OR C2_CADNO = C8_CADNO OR C2_CADNO = C9_CADNO OR C2_CADNO = C10_CADNO OR C3_CADNO = C4_CADNO OR C3_CADNO = C5_CADNO OR C3_CADNO = C6_CADNO OR C3_CADNO = C7_CADNO OR C3_CADNO = C8_CADNO OR C3_CADNO = C9_CADNO OR C3_CADNO = C10_CADNO OR C4_CADNO = C5_CADNO OR C4_CADNO = C6_CADNO OR C4_CADNO = C7_CADNO OR C4_CADNO = C8_CADNO OR C4_CADNO = C9_CADNO OR C4_CADNO = C10_CADNO OR C5_CADNO = C6_CADNO OR C5_CADNO = C7_CADNO OR C5_CADNO = C8_CADNO OR C5_CADNO = C9_CADNO OR C5_CADNO = C10_CADNO OR C6_CADNO = C7_CADNO OR C6_CADNO = C8_CADNO OR C6_CADNO = C9_CADNO OR C6_CADNO = C10_CADNO OR C7_CADNO = C8_CADNO OR C8_CADNO = C9_CADNO OR C8_CADNO = C10_CADNO OR C9_CADNO = C10_CADNO ) 

Jetzt wissen Sie, warum es wichtig ist, Tabellen zu normalisieren 😉

Versuche dies:

 SELECT * FROM T WHERE C1_CADNO IN (C2_CADNO,C3_CADNO,C4_CADNO,...C10_CADNO) OR C2_CADNO IN (C3_CADNO,C4_CADNO,...C10_CADNO) OR C3_CADNO IN (C4_CADNO,...C10_CADNO) OR C4_CADNO IN (C5_CADNO,...C10_CADNO) ... OR C8_CADNO IN (C9_CADNO,...C10_CADNO) OR C9_CADNO = C10_CADNO 

Anstatt alle Permutationen aufzuzählen, zählen nur die einzelnen Werte in der Zeile. Wenn die Zählung zu klein ist, dann müssen Sie Duplikate haben.

 SELECT * FROM T WHERE ( SELECT COUNT(DISTINCT value) FROM (VALUES (C1_CADNO),(C2_CADNO),(C3_CADNO),(C4_CADNO),(C5_CADNO),(C6_CADNO),(C7_CADNO),(C8_CADNO),(C9_CADNO),(C10_CADNO) ) t(value) ) < 10 

Ob das funktioniert,

 select CADNO,count(*) cnt from (select C1_CADNO [CADNO] from table1 union all select C2_CADNO from table1 ...... .... select C10_CADNO from table1 )t4 group by CADNO having count(*)>1