日期:2014-05-18  浏览次数:20362 次

请教一个sql问题,谢谢了
有一张表有三个字段如语文,数学,英语,里面有三条数据,如下所示
  语文 数学 英语 
  45 70 89
  90 45 79
  89 89 89

要求显示为: 60 分以下的是差 60到80的为良 80以上的为好,如下所示

  语文 数学 英语
  差 良 好
  好 差 良
  好 好 好 


我想请教一下要实现这样的结果sql怎么写


------解决方案--------------------
SQL code
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([语文] int,[数学] int,[英语] int)
insert [tb]
select 45,70,89 union all
select 90,45,79 union all
select 89,89,89
go

select 
  语文=case when 语文<60 then '差' when 语文>=80  then '好' else '良' end,
  数学=case when 数学<60 then '差' when 数学>=80  then '好' else '良' end,
  英语=case when 英语<60 then '差' when 英语>=80  then '好' else '良' end
from tb

/**
语文   数学   英语
---- ---- ----
差    良    好
好    差    良
好    好    好

(3 行受影响)
**/

------解决方案--------------------
case when 判断一下就ok了。