należy pamiętać, że na każdym poziomie Case statement, gdy warunek zostanie obliczony jako TRUE, polecenie THEN jest przetwarzane i przechodzi do końca.
Nie testujesz jednego pola dla pięciu różnych warunków; testujesz 5 różnych pól dla jednego z dwóch możliwych warunków. Można sobie z tym poradzić na dwa sposoby. Albo możesz utworzyć zagnieżdżone polecenie CASE o głębokości 5 poziomów (z dalszym zagnieżdżeniem na każdym poziomie do 5, co oznacza wiele powtarzających się instrukcji CASE na różnych poziomach), albo możesz spłaszczyć je, sprawiając, że Warunki WHEN obejmują wszystkie 5 pól i porządkując je w taki sposób, że wzajemnie wykluczają się kombinacje dla każdego WHEN, np.,
CASE
WHEN IS NULL AND IS NULL AND IS NULL and IS NULL and is NULL THEN
WHEN WHEN is NOT NULL AND IS NULL AND IS NULL and IS NULL and is NULL THEN
* * * *
END
oba podejścia będą prawdopodobnie działać mniej więcej tak samo, więc pozostaje tylko pytanie, która struktura jest łatwiejsza do żonglowania koncepcyjnie. Ja uważam, że zagnieżdżanie poza 3 poziomami jest dość mylące.
według moich obliczeń, istnieją 32 różne kombinacje Stanów NULL / non-NULL dla 5 pól (2^5th), więc używając metody płaskiej, potrzebujesz 32 instrukcji WHEN. Każda instrukcja THEN może wymagać posiadania wielu instrukcji, np., AND AND AND .
powodzenia