2016-02-26 63 views
0

我有一個返回廣泛的數據集,每個學生一排,每個「得分」多列的查詢:Postgres的 - 列內更改值

Student ID  score1  score2  score3... 
12345   101  102  103 
67890   102  103  104 

的樂譜不是實際的分數,而是有得分IDS需要翻譯成實際分數。

我想返回實際分數而不是分數id。我知道我可以寫一大堆CASE語句來完成每列的翻譯,但是大約有20列需要翻譯。我希望有一個更有效的方法來做到這一點。

乾杯, 喬納森

+2

存儲在另一個表中的翻譯,然後再加入在該表中。 –

+0

我猜你應該改變,而不是試圖處理其結果的原始查詢。 – Abelisto

+0

如果你想要更有效率的東西,請發佈查詢和查詢本身的表定義。 – Patrick

回答

-1

你可能想做出成績表,然後加入到這一點。這將不需要寫出荒謬的案例查詢。

CREATE TABLE code_scores (
ScoreID INT 
, Value INT) 
    GO 

INSERT INTO code_scores (scoreid, value) 
VALUES 
(101, 100) 
, (102, 99) 
GO 

SELECT studentID, score1, value 
FROM yourtable 
INNER JOIN code_scores 
on score1 = scoreID 
+1

'sql'並不意味着'ms sql server'順便說一句。 – Abelisto