Що з вашого запиту, який вам не подобається? Якщо ви стурбовані тим, що DISTINCT
через два стовпці не повертаються лише унікальні перестановки, чому б не спробувати його?
Це, безумовно, працює, як ви могли очікувати в 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>
редагувати
Я пішов сліпою алеєю з аналітикою, але відповідь була гнітюче очевидною ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
редагувати 2
З огляду на наступні дані, приведене вище рішення для поєднання:
col1 col2
---- ----
A AA
AA A
Отже, ми повинні включити роздільник ...
select col1 + '*' + col2 from t23
/
Очевидно, що обраний роздільник повинен бути символом або набором символів, який ніколи не може відображатися в жодному стовпці.