SQL – DB2 den größten Wert aus mehreren Spalten ermitteln

Die DB2-Funktion MAX berechnet den Maximalwert in einer Spalte – diese Funktionalität wird häufig benötigt und oft verwendet. Weniger bekannt sind die Scalar-Funktionen GREATEST oder LEAST. Mit GREATEST lassen sich auf sehr einfache Weise die Maximalwerte aus mehreren Spalten ermitteln. Mit LEAST lassen sich aus mehreren Spalten die Minimalwerte ermitteln. Eine Beschränkung bezüglich der Spaltenanzahl gibt es nicht, jedoch müssen die Spalten vom gleichen Datentyp sein, damit das Ergebnis Sinn macht.

 


 -- den Maximalwert aus zwei Spalten ermitteln
 SELECT
   KOKO_SAB_U_WHG_BET AS SAB_U
   , KOKO_SAB_K_WHG_BET AS SAB_K
   , GREATEST ( KOKO_SAB_U_WHG_BET , KOKO_SAB_K_WHG_BET ) AS GREATEST
 FROM
   DBPOST01.VWPO0021KOKO
 WHERE
   &FBDAT BETWEEN KOKO_GLT_V_DAT AND KOKO_GLT_B_DAT
   AND FS_DVSYS#ZULIEFER = 41
   AND KOKO_SAB_U_WHG_BET IS NOT NULL
   AND KOKO_SAB_K_WHG_BET IS NOT NULL
 
 Ergebnis:
SAB_U SAB_K GREATEST
-888888 0 0
-390000000 -75000000 -75000000
-687581,34 -618822,94 -618822,94

Zu beachten ist, dass Spalten die NULL Werte enthalten immer dazu führen, dass das Ergebnis der GREATEST oder LEAST Funktionen NULL ist. Möchte man das umgehen, so kann man versuchen dies mit COALESCE zu umgehen.