Hier ist meine Testtabellendaten:Wie kann ich Spalten von Datensätzen aus derselben Tabelle vergleichen?
Testing
ID Name Payment_Date Fee Amt
1 BankA 2016-04-01 100 20000
2 BankB 2016-04-02 200 10000
3 BankA 2016-04-03 100 20000
4 BankB 2016-04-04 300 20000
Ich versuche Felder Name, Fee und Amt der einzelnen Datensätze zu vergleichen, um zu sehen, ob die gleichen Werte sind oder nicht. Wenn sie den gleichen Wert haben, möchte ich etwas wie "Y" zu diesen Aufzeichnungen markieren. Hier ist das erwartete Ergebnis
ID Name Payment_Date Fee Amt SameDataExistYN
1 BankA 2016-04-01 100 20000 Y
2 BankB 2016-04-02 200 10000 N
3 BankA 2016-04-03 100 20000 Y
4 BankB 2016-04-04 300 20000 N
Ich habe diese beiden Methoden unten versucht. aber ich suche nach anderen Lösungen, damit ich das Beste für meine Arbeit herausgreifen kann.
Methode 1.
select t.*, iif((select count(*) from testing where name=t.name and fee=t.fee and amt=t.amt)=1,'N','Y') as SameDataExistYN from testing t
Methode 2.
select t.*, case when ((b.Name = t.Name)
and (b.Fee = t.Fee) and (b.Amt = t.Amt)) then 'Y' else 'N' end as SameDataExistYN
from testing t
left join (select Name, Fee, Amt
from testing
Group By Name, Fee, Amt
Having count(*)>1 ) as b on b.Name = t.Name
and b.Fee = t.Fee
and b.Amt = t.Amt
Versuchen Sie nur, doppelte Datensätze zu finden? – karina
Ja! Ich versuche, doppelte Aufzeichnung zu finden und etw zu markieren –
Ich denke, Ihre erste Methode ist nicht korrekt, da es nur durch den Namen vergleicht. –