2016-02-26 62 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