日期:2014-05-17  浏览次数:20641 次

Sql Server怎样用查询到的字段当条件?
题目表述不是很明确,这里用个具体事例来表达,有一个表R,里面有数学成绩MatScore、英语成绩EngScore、政治成绩PolScore、C#成绩C1Score、JAVA成绩C2Score、VC成绩C3Score、Sql Server成绩C4Score、音乐成绩MusScore、体育成绩TScore、美术成绩MScore;然后首先:
1、必修课成绩:MatScore + EngSocre + PolScore
2、专业课成绩:C1Score + C2Score + C3Score + C5Score
3、完全不重要课程成绩:MusScore + TScore + MScore
这时:要求求总成绩:1 + 2 + 3
当然可以用:MatScore + EngSocre + PolScore + C1Score + C2Score + C3Score + C5Score + MusScore + TScore + MScore 但是要求是用1、2、3来加,可是1,2,3在数据库中没有这个东西,只是为了大家好看我自己加上去的,直观一点说就是:
select MatScore + EngScore + PolScore from R where no = '1001' and classNo = '20121001' +select C1Score + C2Score + C3Score + C5Score from R where no = '1001' and classNo = '20121001' + select MusScore + TScore + MScore from R where no = '1001' and classNo = '20121001'  但是这完全不对,请问应该怎么改正?????
------最佳解决方案--------------------
select StudentName, (case when  age=25 or  age=19 then '太大或者太小'
                              when age between 20 and 24 then '正合适' else '随便写' end ) as type_level from R
------其他解决方案--------------------
select (
select MatScore + EngScore + PolScore from R where no = '1001' and classNo = '20121001')+(
select C1Score + C2Score + C3Score + C5Score from R where no = '1001' and classNo = '20121001' )+(
select MusScore + TScore + MScore from R where no = '1001' and classNo = '20121001')  
------其他解决方案--------------------
select MatScore + EngSocre + PolScore 必修课成绩,
C1Score + C2Score + C3Score + C5Score 专业课成绩,
MusScore + TScore + MScore 完全不重要课成绩,
 MatScore + EngSocre + PolScore +C1Score + C2Score + C3Score + C5Score+MusScore + TScore + MScore 总成绩
from R
where no = '1001' and classNo = '20121001' 
------其他解决方案--------------------
引用:
select MatScore + EngSocre + PolScore 必修课成绩,
C1Score + C2Score + C3Score + C5Score 专业课成绩,
MusScore + TScore + MScore 完全不重要课成绩,
 MatScore + EngSocre + PolScore +C1Score + C2Score + C3Sc……


额,顺便问一下另一个问题:在case when中怎么用or? 

select StudentName (case age when 25 or 19 then '太大或者太小'
                             when 20 and 24 then '正合适' end ) as type_level from R