2013-06-24 59 views
2

我使用SQL Server 2008.i有包含两个columns.one是电影名称和其他一个一个表是rating.my表结构类似:如何在sqlserver 2008中显示数据?

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

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

Select * from tablename 

我想要什么手段,而不是显示的评级为数字应该显示,适合等级3,更好地为等级2和最坏的评价1.

即)

我要像这

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

任何人都可以告诉我如何使用sql语句显示这样?

回答

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,然后的TableNameRating列可以为外国键,然后加入到这个表来检索评级。这将具有执行参照完整性的好处,并且还将允许更改评级名称(或者例如跨语言友好),而不用硬编码到代码中。

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

好吧,如果你刚才这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 

这将允许你插入更多的评级为“类型”,你会不会有改变查询(我第一次查询),并添加案件情况的aditional的评级。在添加更多评分类型和其他评分的影片后,它们会自动显示在您的结果中。