Ada apa dengan kueri Anda saat ini yang tidak Anda sukai? Jika Anda khawatir bahwa DISTINCT
di dua kolom tidak hanya mengembalikan permutasi unik mengapa tidak mencobanya?
Ini tentu berfungsi seperti yang Anda harapkan di 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>
sunting
Saya pergi ke jalan buntu dengan analitik tetapi jawabannya sangat jelas ...
SQL> select count(distinct concat(deptno,job)) from emp
2 /
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
edit 2
Mengingat data berikut, solusi gabungan yang disediakan di atas akan salah hitung:
col1 col2
---- ----
A AA
AA A
Jadi kita memasukkan pemisah ...
select col1 + '*' + col2 from t23
/
Jelas pemisah yang dipilih harus berupa karakter, atau serangkaian karakter, yang tidak akan pernah muncul di kolom mana pun.