我正在使用sql server 2008.i有一个表包含两列。一个是电影名称,另一个是rating.my表结构,如:
MovieName | Rating
ABC | 3
XYZ | 2
DEF | 1
我使用以下语句来显示我的表记录。
Select * from tablename
我想要的意思不是将评级显示为应显示的数字,而是评级3,评级2更好,评级1更差。
即)
我想要这样
MovieName | Rating
ABC | Good
XYZ | Better
DEF | Worst
任何人都可以告诉我如何使用sql语句显示这样吗?
答案 0 :(得分:4)
SELECT MovieName,
CASE WHEN Rating = 1 THEN 'Worst'
CASE WHEN Rating = 2 THEN 'Better'
CASE WHEN Rating = 3 THEN 'Good' END AS Rating
FROM tablename
更好的解决方案是再增加一个带有评级的表并加入2个表来显示结果:
SELECT a.MovieName, b.Description AS Rating
FROM movies a JOIN ratings b on a.Rating = b.Rating
答案 1 :(得分:2)
您可以使用CASE
即时映射:
SELECT MovieName,
CASE Rating
WHEN 3 then 'Good'
WHEN 2 then 'Better'
WHEN 1 then 'Worst'
END AS Rating
FROM TableName
但是,您最好使用Lookup table,然后Rating
的{{1}}列可以使用外键,然后加入此表以检索评分。这将有利于实施参照完整性,并且还允许更改评级名称(或使其成为交叉语言友好),而无需对代码进行硬编码。
答案 2 :(得分:1)
好吧,如果您只有这3个评级,那么快速简单的解决方案就是:
SELECT MovieName,
CASE rating
WHEN 3 then 'Good'
WHEN 2 then 'Better'
WHEN 1 THEN 'Worst'
from table
但如果您打算创建更多评级,我建议创建另一个包含评级名称的表(查找表)。
Ratings
Rating RatingName
1 Worst
2 Better
3 Good
4 Supercool
完成此设置后,您可以更轻松地执行此操作。
SELECT m.MovieName, r.RatingName
FROM movies m join ratings r on m.rating = r.rating
这将允许您插入更多评级“类型”,您不必更改查询(我的第一个查询)并添加附加评级的案例情况。添加更多评分类型和带有其他评分的电影后,它们会自动显示在您的结果中。