2017-03-24 61 views
0

我有兩個表,我想要加入他們,並從一個查找另一個查找列標題。在PostgreSQL中使用字符串作爲變量來查找列名稱

一個表是這樣的:

table: student_score    
student| red |blue |green 
------- -------- ------- ----- 
201 | 88 |89  |78 
345 | 67 |72  |95 
987 | 75 |81  |89 

另一種是這樣的:

table: student_history 
student | color_last_year 
------- ----------------- 
201  | red 
345  | blue 
987  | green 

我期待在PostgreSQL中創建一個查詢,讓我來接去年的顏色(來自歷史記錄表)作爲分數表中的列標題。在過去,我使用JavaScript來做到這一點,但寧願在一個psql查詢中完成。

JS的看起來是這樣的:

function lastYear(color){ 
var query = 'SELECT student_score.' + color + ' 
    FROM student_score 
    JOIN student_score ON student_score.student = 
    student_history.student 
    //...more code .... //;' 
} 

我一直試圖找到解決這個幫助文檔和搜索,但不知道如何以最佳方式設置我的查詢。

回答

3

可以使用case表達:

select 
    s.student, 
    case h.color_last_year 
     when 'red' then s.red 
     when 'blue' then s.blue 
     when 'green' then s.green 
    end as val 
from student_score s 
join student_history h on s.student = h.student; 
+0

作品!謝謝。現在我試圖將其納入我的更大的查詢中,並找出新的錯誤來解決。繼續到下一個SO帖子! – edswartz