この手法は標準的な列にはうまく機能しますが、理解できない問題に遭遇しました。レポート目的でクエリの結果を書き直しており、次のようにエイリアス列「PARENT」で並べ替える必要があります。
select fun.MODULE_ID
, fun.FUNCTION_ID
, COALESCE(fun.parent_function, fun2.function_id) as PARENT
, fun.DESCRIPTION
, fun.FUNCTION_PURPOSE
from MODULE_FUNCTION fun
LEFT JOIN MODULE_FUNCTION fun2
ON fun.function_id = fun2.function_id
AND fun2.function_id IN (SELECT parent_function FROM MODULE_FUNCTION)
ORDER BY MODULE_ID
, PARENT
, FUNCTION_ID
これはうまく機能しますが、私の列 'PARENT_FUNCTION' とそのエイリアス 'PARENT' には null が含まれています。これらを一番下にしたいと思います。だから私はこれを行うとき:
ORDER BY MODULE_ID
, case when PARENT is null then 1 else 0 end, PARENT
, FUNCTION_ID
「列名 'PARENT' が無効です。」というメッセージが表示されます。
何か案は?(SQL に関してはまだ非常に新しいです!)