表tb
字段(varchar型) A
0
B
C
0
D
...
"0"是数字
用sql怎样排序得到:A
B
C
D
0
0
...
也就是要实现对成绩的降序排序,A代表的成绩大于B代表的成绩,我试过了用
select  from tb order by  desc
结果是:
D
C
B
A
0
0
...
用select  from tb order by 
结果是:
0
0
A
B
C
D
...

解决方案 »

  1.   

    select  from tb order by (case  when '0' then 'F' else  end)
      

  2.   

    to dulei115():
    如果字段不是表的字段,而是这样
    表tb
    字段成绩(varchar型)
    学号 姓名  课程  成绩
    1    aa    语文  A
    1    aa    数学  B
    1    aa    总分  A+B
    2    bb    语文  0
    2    bb    数学  0
    2    bb    总分  0
    3    cc    语文  B
    3    cc    数学  C
    3    cc    总分  B+C
    现要用实现
    学号 姓名 语文 数学 总分
    1    aa   A    B    A+B
    3    cc   B    C    B+C
    2    bb   0    0    0
    我用了:
    declare @s varchar(8000)
    set @s='select 学号,姓名
    select @s=@s+',['+课程+']=isnull(max(case when 课程='''+课程+''' then convert(char(10),成绩,108) end),null)' from View3 group by 课程
    exec(@s+' from View3 group by 学号,姓名,性别 order by 总分)order by 后应该改成什么样?才能得到需要的结果?
      

  3.   

    “总分”换成“case 总分 when ''0'' then ''F'' else  end”试试
      

  4.   

    if object_id('tb') is not null drop table tb
    select 1 as 学号, 'aa' as 姓名, '语文' as 课程, 'A' as 成绩
    into tb
    union select 1, 'aa', '数学', 'B'
    union select 1, 'aa', '总分', 'A+B'
    union select 2, 'bb', '语文', '0'
    union select 2, 'bb', '数学', '0'
    union select 2, 'bb', '总分', '0'
    union select 3, 'cc', '语文', 'B'
    union select 3, 'cc', '数学', 'C'
    union select 3, 'cc', '总分', 'B+C'
    --------------------------------------
    declare @s varchar(8000)
    set @s = 'select * from (select 学号,姓名'
    select @s = @s + ', ['+课程+'] = max(case when 课程 = ''' + 课程 + ''' then convert(char(10), 成绩, 108) end)' 
    from tb group by 课程
    set @s = @s + ' from tb group by 学号,姓名) a order by case 总分 when ''0'' then ''F'' else 总分 end'
    exec(@s)
    /*
    学号  姓名  数学  语文  总分
    1     aa   B     A     A+B       
    3     cc   C     B     B+C       
    2     bb   0     0     0         
    */
    --------------------------------------
    drop table tb
      

  5.   

    to dulei115():
    服务器: 消息 207,级别 16,状态 3,行 20
    列名 '课程' 无效。
    服务器: 消息 207,级别 16,状态 1,行 20
    列名 '课程' 无效。
    服务器: 消息 207,级别 16,状态 1,行 20
    列名 '课程' 无效。
      

  6.   

    我是直接copy你写的代码在分析器里测试的,结果出错,是不是你copy上来时漏写了?