在查询中将列名的文本值转换为列

时间:2019-09-26 01:09:00

标签: sql amazon-redshift

我正在尝试使用从解码函数推导出的文本来动态获取名为“ abc”的列的值。解码功能将返回列的文本值,即'abc',但不会动态返回基础值。有没有办法做到这一点 ?

SELECT LOWER(DECODE('METRIC','METRIC','abc','MODEL','xyz','COUNTRY','US')) as abc FROM table_test

预期结果:

abc
---
1.2 
1.5
1.6
1.7

table_test:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果不能将列用作DECODE中的值,则可以始终编写正则CASE表达式:

SELECT
    CASE metric WHEN 'METRIC'  THEN abc
                WHEN 'MODEL'   THEN xyz
                WHEN 'COUNTRY' THEN US END AS output
FROM table_test;