2

我正在使用 sql server 2008。我有一个包含两列的表。一个是电影名称,另一个是评级。我的表结构如下:

 MovieName | Rating
 ABC       | 3
 XYZ       | 2
 DEF       | 1

我使用以下语句来显示我的表记录。

 Select * from tablename

我想要的意思不是将评级显示为应该显示的数字,对评级 3 有好处,对评级 2 更好,对评级 1 最差。

IE)

我想要这样

  MovieName | Rating
 ABC       | Good
 XYZ       | Better
 DEF       | Worst

谁能告诉我如何使用 sql 语句这样显示?

4

3 回答 3

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

更好的解决方案是再添加一张带有评级的表,然后将这两张表连接起来以显示结果:

SELECT a.MovieName, b.Description AS Rating
FROM movies a JOIN ratings b on a.Rating = b.Rating
于 2013-06-24T13:30:57.957 回答
2

您可以使用CASE动态映射:

SELECT MovieName, 
 CASE Rating
    WHEN 3 then 'Good'
    WHEN 2 then 'Better'
    WHEN 1 then 'Worst'
  END AS Rating
FROM TableName

但是,您最好使用查找表,然后可以将 的RatingTableName作为外键,然后加入该表以检索评级。这将有利于执行参照完整性,并且还将允许更改评级名称(或使例如跨语言友好),而无需硬编码到代码中。

于 2013-06-24T13:29:09.603 回答
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

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

于 2013-06-24T13:33:57.187 回答