Was gefällt Ihnen an Ihrer vorhandenen Abfrage nicht? Wenn Sie befürchten, dass DISTINCT
über zwei Spalten nicht nur die eindeutigen Permutationen zurückgegeben werden, probieren Sie es aus.
Es funktioniert auf jeden Fall so, wie Sie es von Oracle erwarten.
SQL> select distinct deptno, job from emp
2 order by deptno, job
3 /
DEPTNO JOB
---------- ---------
10 CLERK
10 MANAGER
10 PRESIDENT
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
9 rows selected.
SQL> select count(*) from (
2 select distinct deptno, job from emp
3 )
4 /
COUNT(*)
----------
9
SQL>
bearbeiten
Ich ging mit Analytik eine Sackgasse entlang, aber die Antwort war bedrückend offensichtlich ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
bearbeiten 2
Angesichts der folgenden Daten wird die oben bereitgestellte Verkettungslösung falsch gezählt:
col1 col2
---- ----
A AA
AA A
Also müssen wir ein Trennzeichen einfügen ...
select col1 + '*' + col2 from t23
/
Offensichtlich muss das gewählte Trennzeichen ein Zeichen oder eine Reihe von Zeichen sein, die in keiner der Spalten erscheinen dürfen.