Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verhindern Sie, dass die Oracle-Minus-Anweisung Duplikate entfernt

Eine weitere Option:

SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
MINUS
SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2

Dies wäre MINUS, wobei jedes Duplikat als separater Eintrag behandelt würde. Beachten Sie im folgenden Beispiel, dass Sie einen in der Ausgabe erhalten, wenn TEST1 zwei 'C'-Werte und TEST2 nur einen hat.

dev> select * from test1;

T
-
A
A
B
C
C

dev> select * from test2;

T
-
B
C

dev>     SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
  2      MINUS
  3      SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2
  4  /

T ROW_NUMBER()OVER(PARTITIONBYTESTORDERBYTEST)
- --------------------------------------------
A                                            1
A                                            2
C                                            2