SQL sever CASE的几种常用方法
1、比较多列数据最大值
1 select 2 case 3 when 列名1>列名2 and 列名2>列名3 then 列名1 4 when 列名2>列名3 then 列名3 5 else 列名3 end 6 from 表名
2、自定义排序
1 select * from 表名 order by 2 ( 3 case 列名 4 when '字段名1' then 1 --后面的数字是排序 5 when '字段名2' then 2 6 when '字段名3' then 3 7 when '字段名4' then 4 8 else '' end 9 )
3、换行转列
名字 | 科室 | 分数 |
小明 | 语文 | 99 |
小明 | 英语 | 11 |
小明 | 数学 | 12 |
小黄 | 语文 | 29 |
小黄 | 英语 | 21 |
小黄 | 数学 | 22 |
小红 | 语文 | 39 |
小红 | 英语 | 31 |
小红 | 数学 | 32 |
1 select 2 名字, 3 sum(数学) 数学, 4 sum(语文) 语文, 5 sum(英语) 英语 6 from 7 (select name 名字, 8 case when 科室='数学' then sum(分数) else 0 end 数学 , 9 case when 科室='语文' then sum(分数) else 0 end 语文 , 10 case when 科室='英语' then sum(分数) else 0 end 英语 11 FROM 表名 group by 科室,name) 表别名 12 group by 名字
名字 | 语文 | 英语 | 数学 |
小红 | 39 | 31 | 32 |
小黄 | 29 | 21 | 22 |
小明 | 99 | 11 | 12 |