2015-05-26 21 views
1
訪問由它的名字列

我有如下表:在PostgreSQL

column_name | a | b 
-------------------- 
    a  | 0 | 1 
-------------------- 
    b  | 2 | 3 

是否可以寫一個SELECT語句,將返回:

result 
------ 
    0 
    3 

(我想選擇一欄取決於在column_name中指定的名稱)

訣竅是我不知道我將有多少列以及它們的名稱是什麼(除了column_name列)

我無法創建臨時表格,函數等等。是的,這是我大學SQL課程任務的一部分,仍然不是任務本身,所以我相信我可以在這裏尋求幫助。

+1

我相信,在SQL過程中提供的問題更清楚... –

+0

你需要動態SQL。閱讀PL/PgSQL的'EXECUTE'命令。或者,您可能正在尋找交叉制訂/數據透視表,在這種情況下,您希望'tablefunc'擴展名中的'crosstab'函數。 –

回答

1
select case when column_name='b' then b else a end 
from ... 

基本上?它會得到令人難以置信的醜陋乏味的不僅僅是幾列的詳細

+0

我忘了指定這只是一個例子,我不知道該任務中的列數和名稱。我更新了現在這個問題。 –

+1

那麼你將不得不使用動態SQL。例如'select column_name',然後構建一個新的sql字符串到'select value_retrieved_from_other_query'並執行該語句。您不能在查詢的一部分中使用「值」作爲sql關鍵字或同一查詢中其他位置的字段/表名。 –

0

您可以使用PostgreSQL JSON數據類型(及其相關功能):

select row_to_json(table_name)->>(row_to_json(table_name)->>'column_name') from table_name;