Qu'est-ce qui vous déplaît dans votre requête existante? Si vous craignez que DISTINCT
sur deux colonnes ne renvoie pas seulement les permutations uniques, pourquoi ne pas essayer?
Cela fonctionne certainement comme vous pourriez vous y attendre dans 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>
modifier
J'ai suivi une impasse avec l'analyse mais la réponse était évidente et déprimante...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
modifier 2
Compte tenu des données suivantes, la solution de concaténation fournie ci-dessus comptera erroneéent :
col1 col2
---- ----
A AA
AA A
Donc nous devons inclure un séparateur...
select col1 + '*' + col2 from t23
/
Évidemment, le séparateur choisi doit être un caractère, ou un ensemble de caractères, qui ne peut jamais apparaître dans l'une ou l'autre colonne.
0 votes
Iordan Tanev, Mark Brackett, RC - merci pour vos réponses, c'était bien essayé, mais vous devez vérifier ce que vous faites avant de publier sur SO. Les requêtes que vous avez fournies ne sont pas équivalentes à ma requête. Vous pouvez facilement voir que j'ai toujours un résultat scalaire alors que votre requête renvoie plusieurs lignes.
0 votes
Juste mis à jour la question pour inclure votre commentaire de clarification d'une des réponses
0 votes
FYI: community.oracle.com/ideas/18664
1 votes
C'est une bonne question. Je me demandais aussi s'il y avait un moyen plus simple de le faire
0 votes
Vérifiez ma réponse stackoverflow.com/a/75068192/8614314