sql >> データベース >  >> RDS >> Oracle

SQL動的ASCおよびDESC

    数値またはデータ値を操作することにより、@TonyAndrewsのようなソリューションを実行できます。 VARCHAR2の場合 動的SQLの代わりに、次の2つの式を使用することもできます。

    order by
       case when :sorting='ASC' then col1 end ASC,
       case when :sorting='DESC' then col1 end DESC
    

    :sortingの場合 値は'ASC'です。 そのORDER BYの結果 だったかのようになります:

    order by
       col1 ASC,
       NULL DESC
    

    :sortingの場合 値は'DESC' そのORDER BYの結果 だったかのようになります:

    order by
       NULL ASC,
       col1 DESC
    

    この方法の欠点の1つは、データを希望どおりに並べ替えるインデックスが含まれているためにオプティマイザーがSORT操作をスキップできる場合です。これは、このようなCASE方法を使用した場合には発生しません。これにより、何があっても並べ替え操作が必要になります。



    1. Python peewee save()が期待どおりに機能しない

    2. MySQL8ステートメントを選択して「Last_query_cost」を取得します

    3. Oracle用のDBMS_SCHEDULERジョブの作成

    4. Oracle列データの転置と集約