既存のクエリについて、気に入らない点は何ですか?DISTINCT
2つの列にまたがって一意の順列が返されないことが心配な場合は、試してみませんか?
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
/
選択されたセパレータは、文字または文字のセットでなければならず、どちらの列にも表示されることはありません。