在Pivoted LookupTable中查找价值

时间:2017-07-21 21:22:00

标签: sql pivot lookup

我正试图找出从一个透视查找表中查询的最佳方法。

理想情况下,您有一个包含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。由于行是不相交的,

但是,我们的桌子必须按照以下方式构建,因为这是一个笨拙的情况。

1,2,3,4
a,b,c,-

如何创建一个可以在此类表中找到值的查询?

感谢您的期待!

2 个答案:

答案 0 :(得分:1)

我相信你正在寻找一个CASE WHEN声明

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <base href="http://yourdomain.com/">
</head>
<body>
<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741');
echo $txt; ?>
</body>
</html>

希望这有帮助

答案 1 :(得分:1)

  

但是,我们的表必须按照以下方式构建   这是一个笨拙的情况。

您有两种选择:



取消此表,然后以同样的方式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 |

您可以使用上述查询创建视图,并针对此视图运行查询。

假设此表中只有一行 - 构建一个像这样的查询:

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