0

次のように分類したい20列のテーブルがあります。

0-25 --> 1
25-50 --> 2
50-75 --> 3
75-100 --> 4

私は 20 case ... when ステートメントを使用しないことを好みます。これをより動的かつ効率的に行う方法を知っている人はいますか? SQL または PL/SQL を指定できます。

PL/SQL をいくつか試しましたが、列名を変数として使用する簡単な方法が見つかりませんでした。

どうもありがとう。

フランス

4

2 に答える 2

1

このcaseステートメントは、おそらく最も効率的な方法です。より動的な方法は、withステートメントを使用してテーブルを作成することです。コードの例を次に示します。

with ref as (
      select 0 as lower, 25 as higher 1 as val from dual union all
      select 25, 59, 2 from dual union all
      select 50, 75, 3 from dual union all
      select 75, 100, 4 from dual
     )
select ref.val
from t left outer join ref
     on t.col >= ref.lower and t.col < ref.higher

つまり、この特定のルックアップは算術演算で実行できます。

select trunc((t.col - 1) / 25) + 1 as val
from t

また、さまざまな列の管理に問題がある場合は、 を検討してunpivotください。ただ、テキストエディタやエクセルでコードを書いて列名を変更するだけの方が多分簡単だと思います。

于 2013-05-08T13:07:26.613 に答える