根据列值选择另一个列值(postgresql)

时间:2015-07-14 07:11:44

标签: postgresql

在我的前端应用程序中,我有一个名为pick的函数(VALUE,' col1',' col2',' col3')。如果VALUE为2,则应选择col2中的值。

使用"","切换案例"或者" if else"计算

我试图在Postgres中找到类似的功能,但到目前为止还没有运气。看到一些函数array()和values()提到了,但找不到正确的语法。

目标是根据第一列值设置三个列值的返回值。

伪代码(不工作):

Select status values(column1,column2,column3)from code

我知道我可以通过使用" case-when-then-else-end"来实现这一点,但我正在寻找一种更短的方法来实现同样的目标。

Jsfiddle展示了原则。但我只想根据类型选择一个值:

http://sqlfiddle.com/#!15/e0b41/10

1 个答案:

答案 0 :(得分:0)

您可以从pr_ *列创建值数组,然后以这种方式选择其中一个:

(array[prl_1,prl_2,prl_3])[code_type]

这是一个简单的演示:http://sqlfiddle.com/#!15/e0b41/23

select *,
       (array[prl_1,prl_2,prl_3])[code_type]
from code
left join prl on prl_id =1