Do que você não gosta na sua consulta existente? Se você está preocupado que DISTINCT
duas colunas não retornem apenas as permutações exclusivas, por que não tentar?
Certamente funciona como você pode esperar no 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>
editar
Desci um beco sem saída com análises, mas a resposta era deprimente óbvia ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
editar 2
Dados os seguintes dados, a solução de concatenação fornecida acima descontará:
col1 col2
---- ----
A AA
AA A
Então, vamos incluir um separador ...
select col1 + '*' + col2 from t23
/
Obviamente, o separador escolhido deve ser um caractere ou conjunto de caracteres, que nunca pode aparecer em nenhuma coluna.