zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    010 Editor无限制免费安装注册破解图文教程(破解补丁)
    请求设置
    请求方法
    Session
    Config
    Model
    模板2
    模板语法
    动态路由
    Put和Delete
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/2479472.html
Copyright © 2011-2022 走看看