Cosa non ti piace della tua query esistente? Se sei preoccupato che DISTINCT
attraverso due colonne non restituisca solo le permutazioni uniche, perché non provarlo?
Funziona certamente come ci si potrebbe aspettare da Oracle.
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>
modificare
Sono andato in un vicolo cieco con analisi ma la risposta era deprimentemente ovvia ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
modifica 2
Dati i seguenti dati, la soluzione concatenante fornita sopra non conterà:
col1 col2
---- ----
A AA
AA A
Quindi includiamo un separatore ...
select col1 + '*' + col2 from t23
/
Ovviamente il separatore scelto deve essere un carattere, o un insieme di caratteri, che non può mai apparire in nessuna delle colonne.