順序は動的ですが、ソート順序は静的です。Oracle動的DESCおよびASC
SELECT ...
Order By CASE WHEN InputParam = 'PRICE' THEN OFFER_PRICE END DESC,
CASE WHEN InputParam = 'ENDING SOON' THEN EXPIRY_DATE END DESC,
CASE WHEN InputParam = 'DISCOUNT' THEN DISC_PERCENTAGE END DESC,
CASE WHEN InputParam = 'SAVING' THEN SAVING END DESC
ここで、ソート順も動的であることを確認する必要があります。上記のクエリでソート順を動的にする方法はありますか?あなたが望むどのソート順に応じて、1または-1を含む変数l_so
と
SELECT ...
Order By CASE WHEN InputParam = 'PRICE' THEN l_so * OFFER_PRICE END,
CASE WHEN InputParam = 'ENDING SOON'
THEN l_so * (SYSDATE - EXPIRY_DATE) END,
CASE WHEN InputParam = 'DISCOUNT' THEN l_so * DISC_PERCENTAGE END,
CASE WHEN InputParam = 'SAVING' THEN l_so * SAVING END
:
あなたの魔法使い.. –
Expiry_Dateは日時の列です。上記の方法はそのためには機能しません。 –
@Aseem:日付オーダー(ASCの場合は1つ、DESCの場合は1つ)に2つのケースを持つか、日付を日数に変換して、変数を使用して正しいオーダーを選択することができます。 –