My colleague has the following SQL statement executed in Redshift:
SELECT
CASE
WHEN P.PRED_VAL IS NULL THEN R.SCORE_VAL
ELSE P.PRED_VAL
END AS FINAL_SCORE
FROM RESULT R
INNER JOIN PREDICTION P
ON R.ID = P.ID;
Is there any context in which the result of that statement wouldn’t be the same as NVL(P.PRED_VAL, R.SCORE_VAL)?
>Solution :
nvl is simply a non-standard name for the SQL standard coalesce function.
There is no functional difference between your case and your nvl, except that nvl is non-standard. Use coalesce.