2015-10-21 13 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