如何在sql server 2008中显示数据?

时间:2013-06-24 13:27:04

标签: sql sql-server-2008

我正在使用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语句显示这样吗?

3 个答案:

答案 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

这将允许您插入更多评级“类型”,您不必更改查询(我的第一个查询)并添加附加评级的案例情况。添加更多评分类型和带有其他评分的电影后,它们会自动显示在您的结果中。