アのCOALESCEが正解となるのは、FULL JOIN句によって、RまたはSのどちらか一方にしか存在しない行も結果に含まれるためです。この場合、JOIN条件であるR.ID = S.IDを満たせない側のテーブルからは、NULL値が生成されます。SELECT句で (R.ID, S.ID) AS ID と指定しているため、どちらか一方のIDがNULLになる可能性があります。COALESCE関数は、引数リストを順に評価し、最初にNULLでない値を返します。そのため、R.IDとS.IDのどちらかがNULLであっても、NULLでない方のIDを結果のIDとして取得するためにCOALESCEが使用されます。
読み込み中...