+ -
当前位置:首页 → 问答吧 → 关于SQL case的问题

关于SQL case的问题

时间:2011-11-25

来源:互联网

先上图:
SQL code

ORDER BY CASE when @P_SORTEXPRESSION = 'COURSE_DESC'  THEN COURSE_DESC,T.USER_GRADE,
                                          T.USER_GRADE_LEVEL,
                                          T.DIFFICULTY_LEVEL end,
                         CASE when @P_SORTEXPRESSION = 'COURSE_DESC DESC' THEN COURSE_DESC DESC, T.USER_GRADE,
                                          T.USER_GRADE_LEVEL,
                                          T.DIFFICULTY_LEVEL END,
                         CASE WHEN @P_SORTEXPRESSION = 'USER_GRADE' THEN USER_GRADE, T.COURSE_DESC,
                                          T.USER_GRADE_LEVEL,
                                          T.DIFFICULTY_LEVEL END,
                         CASE WHEN @P_SORTEXPRESSION = 'USER_GRADE DESC' THEN USER_GRADE DESC, T.COURSE_DESC,
                                          T.USER_GRADE_LEVEL,
                                          T.DIFFICULTY_LEVEL END,
                         CASE WHEN @P_SORTEXPRESSION = 'USER_GRADE_LEVEL' THEN USER_GRADE_LEVEL, T.COURSE_DESC,
                                          T.USER_GRADE,
                                          T.DIFFICULTY_LEVEL END,
                         CASE WHEN @P_SORTEXPRESSION = 'USER_GRADE_LEVEL DESC' THEN USER_GRADE_LEVEL DESC, T.COURSE_DESC,
                                          T.USER_GRADE,
                                          T.DIFFICULTY_LEVEL END


相信大家都看懂我想干嘛了,对,排序,但是这个Case Then后面是不是只能跟一个值?那要想实现我想要的这种结果该如何操作?!

作者: tianxiaaiwojs   发布时间: 2011-11-25

求教,哪位大神帮帮忙

作者: tianxiaaiwojs   发布时间: 2011-11-25

case..when 后面是不能用变量的 

你可以用if..else判断。

作者: fredrickhu   发布时间: 2011-11-25

引用 2 楼 fredrickhu 的回复:

case..when 后面是不能用变量的

你可以用if..else判断。

CASE when后面的变量是可以的,这个已经成功过了,Then后面的出错的

作者: tianxiaaiwojs   发布时间: 2011-11-25

你这样子的排序就用动态去解决吧!

把前边的查询写到一个字符串 @sql 中

给个排序的字符串变量 @order 用你上边的判断 
select @order = (case when ... then 'aa desc,bb,cc' when ... then ... else ... end)

然后 exec(@sql + ' order by ' + @order)

作者: AcHerat   发布时间: 2011-11-25

你这个需要使用判断语句,然后去执行.
例如:
if @P_SORTEXPRESSION = 'COURSE_DESC'
  select .... from ... order by OURSE_DESC,T.USER_GRADE,T.USER_GRADE_LEVEL,T.DIFFICULTY_LEVEL
else
  if @P_SORTEXPRESSION = 'COURSE_DESC DESC'
  select .... from ... order by OURSE_DESC DESC, T.USER_GRADE,T.USER_GRADE_LEVEL,T.DIFFICULTY_LEVEL
  ....

作者: dawugui   发布时间: 2011-11-25