Като се имат предвид тези тестови данни...
SQL> select *
2 from your_table
3 /
NAME M1 M2 M3 M4
---- ---------- ---------- ---------- ----------
A 1 2 3 4
B 6 3 4 5
C 1 5 2 1
SQL>
... едно просто извикване GREATEST() ще даде желания резултат:
SQL> select name
2 , greatest(m1, m2, m3, m4) as the greatest_m
3 from your_table
4 /
NAME THE_GREATEST_M
---- --------------
A 4
B 6
C 5
SQL>
Обърнете внимание, че greatest()
ще върне NULL, ако някой от аргументите е нулев. Ако това е проблем, използвайте nvl()
да предостави стойност по подразбиране, която няма да изкриви резултата. Например, ако нито една стойност не може да бъде отрицателна....
SQL> select name
2 , greatest(nvl(m1,0), nvl(m2,0), nvl(m3,0), nvl(m4,0)) as the greatest_m
3 from your_table
4 /
NAME THE_GREATEST_M
---- --------------
A 4
B 6
C 5
SQL>