2017-07-21 5 views
0

ピボット式ルックアップテーブルからクエリを実行する最適な方法を理解しようとしています。ピボット式ルックアップテーブルの値を見つける

理想的には、あなたは正しい出力を引っ張ってコードを書くことができ、ここで3列

min, max, value 
1, 2, a 
2, 3, b 
3, 4, c 

とのルックアップテーブルを持っていると思います:

select value from table 
where input >= min and input < max 

ので、入力= 1.5、その値であれば= a、入力= 2.5の場合、値= b。行が離れているので、

しかし、私たちのテーブルは以下のように構成する必要があります。

このタイプのテーブルの値を見つけるクエリを作成するにはどうすればよいですか?

ありがとうございます!

+0

ことがあり、どのような値それぞれが – Horaciux

+0

テーブルを保持していることは明らかではないが何列名は明らかではありません。 plsは列の名前を書いて私達に多くの情報を与えます。 –

答えて

1

に役立ちますが、しかし、私たちのテーブルには、以下のようにして構築する必要があるCASEを探していると信じて状況。


このテーブルアンピボット
と同様SELECT value FROM (subquery) ...でこのサブクエリ
の結果から、クエリ:

SELECT 1 as min, 2 as max, "1" as value FROM table1 
UNION ALL 
SELECT 2 as min, 3 as max, "2" asvalue FROM table1 
Union All 
SELECT 3 as min, 4 as max, "3" asvalue FROM table1 

デモ:http://sqlfiddle.com/#!17/b6b4d/2

| min | max | value | 
|-----|-----|-------| 
| 1 | 2 |  a | 
| 2 | 3 |  b | 
| 3 | 4 |  c | 

は、2つのオプションがあります

上記のクエリを使用してビューを作成し、このビューに対してクエリを実行します。


のみ1行はこのようなクエリを構築卓上この中であることをAssumming:

SELECT CASE 
     WHEN input >=1 AND input < 2 THEN "1" 
     WHEN input >=2 AND input < 3 THEN "2" 
     WHEN input >=3 AND input < 4 THEN "3" 
     END As value 
FROM Table1 
1

私はあなたがこのjanky 1オフになっている として声明

Select case when min >= 1 and max <3 then 'A' 
      when min >= 2 and max <4 then 'B' 
      when min >= 3 and max <5 then 'C' 

     else NULL 
     end Value 

From table 

希望これは

関連する問題