Utilizzo di una CASSA espressione nel WHERE la clausola dovrebbe fare il trucco. Quando dici che non hai bisogno della clausola where se la condizione non è soddisfatta, tutto ciò che desideri è una condizione come WHERE 1 = 1
, ovvero quando la condizione non è soddisfatta, restituire tutte le righe. Quindi, devi rendere la condizione non soddisfatta come sempre VERO .
Ad esempio,
Ho un tavolo dipendente,
SQL> SELECT empno, ename, deptno
2 FROM emp;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
14 rows selected.
SQL>
Voglio selezionare i dettagli del dipendente, se il dipartimento è 20, usa la clausola where altrimenti restituisce tutti i dettagli del dipendente, ma filtra il dipartimento che soddisfa la condizione where.
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE ename =
4 CASE
5 WHEN deptno = 20
6 THEN 'SCOTT'
7 ELSE ename
8 END
9 /
EMPNO ENAME DEPTNO
---------- ---------- ----------
7499 ALLEN 30
7521 WARD 30
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7900 JAMES 30
7934 MILLER 10
10 rows selected.
SQL>
Quindi, per il dipartimento 20, il filtro viene applicato dalla clausola where e ottengo solo la riga per ename SCOTT, per gli altri restituisce tutte le righe.