• SQL 查询横表变竖表


    首先是三张表, CNo对应的是课程,在这里我就粘贴了。            

                                  主表

                     人名表

    按照常规查询

    SELECT s.SName, c.CName,s2.SCgrade

      FROM S s INNER JOIN SC s2 ON s2.SNo = s.SNo INNER JOIN C c ON c.CNo = s2.CNo

    那么结果是这样的

    但是这是横表 不是我想看到的结果。

    我们要看到这样的结果:

    那么怎么办呢?

       第一种写法:SELECT w.SName,

       sum(case when  w.CNo= 1 then w.SCgrade   ELSE 0 END) AS '语文',

        sum(case  WHEN w.CNo =2 THEN  w.SCgrade  ELSE   0 END) AS '数学',

      sum(case when  w.CNo= 3 then w.SCgrade  ELSE  0 END) AS '英语'

    FROM

    (SELECT s.SNo,s.SName, s2.CNo, s2.SCgrade  FROM s s INNER JOIN SC s2 ON s2.SNo = s.SNo WHERE s.SNo IN (SELECT c.SNo  FROM sc c GROUP BY c.SNo ))

    AS w GROUP BY w.SName

      

       第二种写法: SELECT s.SName,

       sum(case when  s2.CNo= 1 then s2.SCgrade   ELSE 0 END) AS '语文',

        sum(case  WHEN s2.CNo =2 THEN  s2.SCgrade  ELSE   0 END) AS '数学',

      sum(case when  s2.CNo= 3 then s2.SCgrade  ELSE  0 END) AS '英语'

    FROM

     S s INNER JOIN SC s2 ON s2.SNo = s.SNo

    INNER JOIN C c ON c.CNo = s2.CNo

     GROUP BY s.SNo,

     s.SName

       这是我工作遇到过得情况,总结下来。如果有遇到这种情况的话可以参考下。


  • 相关阅读:
    QTP11安装包 免费汉化版 / QTP11破解版下载
    linux查看操作系统版本、内存信息
    Oracle 性能优化总结
    CV-物体检测-tensorflow
    pytest使用-文火微烹pytest
    高科技通缩和比特币投资
    格局观修炼
    陈春花推荐的三本书是什么 back to basic -- management
    长期价值主义
    参与感,对于一个人究竟有多重要?
  • 原文地址:https://www.cnblogs.com/mxh691/p/2478941.html
Copyright © 2020-2023  润新知