开发者社区> 问答> 正文

SQL case语句如何执行的

有张学生表
screenshot
有张课程
screenshot
有张成绩表
screenshot
用SQL语句写出所有学生的所有课程的成绩,
SQL语句如下:
screenshot
得出的结果示例如下:
screenshot
我不明白的为什么上面的SQL语句能得到正确结果。
首先上面的SQL语句连接后,有个类似于这样的表
screenshot
然后一条一条地执行表中的数据,第一条数据,确实是语文,可以得到语文分数
然后再执行第二个Case ,应该显示结果为null啊…好乱
我想知道 case语句是如何执行 得到正确结果的

展开
收起
吴孟桥 2016-06-12 17:03:22 2464 0
1 条回答
写回答
取消 提交回答
  • 你这问题是因为max原因,你把语句拆一下就理解过程了

    1、去掉group by和max,得到的就是你理解的过程
    screenshot
    2、再第一步基础上进行人员分组和MAX取每列最大值,得到每门课的最大值。就是case when中没列唯一有值的。
    screenshot

    2019-07-17 19:34:38
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载