2015-10-21 14 views
1

我想采用单字符串查询响应来在另一个查询中填充SELECT语句。有人说这是不可能的,但Redshift让我们都变成傻瓜。动态选择要在Redshift中查询的列

想象我有一个表DAY_OF_WEEK如下:

Day of Week | Weekend 
--------------------- 
    Monday | No 
    Tuesday | No 
    Wednesday | No 
    Thursday | No 
    Friday | No 
    Saturday | Yes 
    Sunday | Yes 

而另一个这样party_time:

Yes   | No 
-------------------------- 
All the time | None of the time 

我希望让别人只告诉我一天的时间(例如,“星期三” ),然后使用生成的Weekend值查询party_time。

SELECT (SELECT Weekend FROM day_of_week WHERE "Day of Week" = 'Wednesday') 
FROM party_time 

结果:

如何 '时无'?

+0

也许有一些聪明的技巧使用UNPIVOT将列名转换为可以为你工作的值,但这超出了我的能力ATM。 – Turophile

回答

1

SQL本身不是动态的/自引用的,虽然大多数实现都有某种元语言来部分解决这个问题。

您的问题,最明显的解决方案是更改表party_time:

Test Meaning 
-------------------------- 
Yes  All the time 
No  None of the time 

然后就可以使用了连接或子选择去你的答案:

select meaning 
from party_time 
inner join day_of_week 
on weekend = test 
where Day_of_Week = 'Wednesday' 

例子: http://sqlfiddle.com/#!9/f10b7/1

+0

是的,同意了。我试图做一个玩具的例子。实际上,我有一张有四列的表格:数百个对象的索引+3个统计数据。我有一个用户界面,可以选择要显示的数据。所以我真的只想传递这个变量来查询并且只是拉取相关的统计数据。 – ScottieB