次のように分類したい20列のテーブルがあります。
0-25 --> 1
25-50 --> 2
50-75 --> 3
75-100 --> 4
私は 20 case ... when ステートメントを使用しないことを好みます。これをより動的かつ効率的に行う方法を知っている人はいますか? SQL または PL/SQL を指定できます。
PL/SQL をいくつか試しましたが、列名を変数として使用する簡単な方法が見つかりませんでした。
どうもありがとう。
フランス
次のように分類したい20列のテーブルがあります。
0-25 --> 1
25-50 --> 2
50-75 --> 3
75-100 --> 4
私は 20 case ... when ステートメントを使用しないことを好みます。これをより動的かつ効率的に行う方法を知っている人はいますか? SQL または PL/SQL を指定できます。
PL/SQL をいくつか試しましたが、列名を変数として使用する簡単な方法が見つかりませんでした。
どうもありがとう。
フランス
この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
ください。ただ、テキストエディタやエクセルでコードを書いて列名を変更するだけの方が多分簡単だと思います。