¿De qué se trata su consulta existente que no le gusta? Si te preocupa queDISTINCT
en dos columnas no devuelva solo las permutaciones únicas, ¿por qué no probarlo?
Ciertamente funciona como es de esperar en 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
Bajé por un callejón sin salida con análisis, pero la respuesta fue deprimentemente obvia ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
editar 2
Teniendo en cuenta los siguientes datos, la solución de concatenación proporcionada anteriormente contará erróneamente:
col1 col2
---- ----
A AA
AA A
Entonces incluiremos un separador ...
select col1 + '*' + col2 from t23
/
Obviamente, el separador elegido debe ser un carácter, o conjunto de caracteres, que nunca puede aparecer en ninguna columna.