Co ci się nie podoba w istniejącym zapytaniu? Jeśli obawiasz się, że DISTINCT
w dwóch kolumnach nie zwraca tylko unikalnych permutacji, dlaczego nie spróbować?
Z pewnością działa tak, jak można oczekiwać w 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>
edit
Zeszłam w ślepy zaułek z analityki ale odpowiedź była żenująco oczywiste ...
SQL> select count(distinct concat(deptno,job)) from emp
2/
COUNT(DISTINCTCONCAT(DEPTNO,JOB))
---------------------------------
9
SQL>
edit 2
Biorąc pod uwagę następujące dane powyższe rozwiązanie konkatenacji spowoduje błędne oszacowanie:
col1 col2
---- ----
A AA
AA A
więc obejmować separator ...
select col1 + '*' + col2 from t23
/
Oczywiście wybrany separator musi być znak lub zestaw znaków, który nigdy nie może pojawić się w każdej kolumnie.
IordanTanev, Mark Brackett, RC - dzięki za odpowiedzi, była to miła próba, ale przed wysłaniem do SO należy sprawdzić, co robisz. Podane zapytania nie są równoważne z moim zapytaniem. Możesz łatwo zobaczyć, że zawsze mam wynik skalarny, ale zapytanie zwraca wiele wierszy. – Novitzky
Właśnie zaktualizowałem pytanie, aby dodać komentarz wyjaśniający z jednej z odpowiedzi. – Jeff