多字段使用同一个case when条件

je5s_ 2018-03-11 12:45:03
今天看到一道面试题:
写出能生成以下结果的sql语句。条件是:[80,~]优秀,[60,80)及格,[~,60)不及格
我知道有复杂写法,就是select的时候每个字段都写一遍case when
但是肯定有简单写法吧??
请教!
...全文
2689 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
je5s_ 2018-03-11
  • 打赏
  • 举报
回复
引用 1 楼 hhfxl2009 的回复:
select * from ( with tt as (select * from score unpivot (cj for kc in ("语文","数学","英语"))) select kc,(case when cj>=80 then '优秀' when cj>=60 then '及格' else '不及格' end) cj from tt) pivot (max(cj) for kc in ('语文' 语文,'数学' 数学,'英语' 英语))
完美。非常感谢!
  • 打赏
  • 举报
回复
case when 后面可以直接套when then 可以套很多层
hhfxl2009 2018-03-11
  • 打赏
  • 举报
回复
select * from ( with tt as (select * from score unpivot (cj for kc in ("语文","数学","英语"))) select kc,(case when cj>=80 then '优秀' when cj>=60 then '及格' else '不及格' end) cj from tt) pivot (max(cj) for kc in ('语文' 语文,'数学' 数学,'英语' 英语))

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧