动态选择要在Redshift中查询的列

时间:2015-10-21 23:42:48

标签: sql dynamic amazon-redshift

我想采用单字符串查询响应来填充另一个查询中的SELECT语句。有些人说这是不可能的,但Redshift使我们所有人都变得愚蠢。

想象一下,我有一个表day_of_week如下:

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

另一个派对时间如下:

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

我想允许某人告诉我一天(例如,"星期三和#34;)然后使用生成的周末值来查询party_time。

例如

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

结果:'没有时间'

如何?

1 个答案:

答案 0 :(得分:1)

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

对您的问题最明显的解决方案是更改table 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