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

  • 相关阅读:
    nginx-syslog
    loki
    idea安装中文插件
    nginx虚拟目录alias
    个人 软件系统整理
    Python 遍历Sheet 每个Sheet都单独保存为一个Excel
    SQL Server 多表关联的update语句
    电商 生意参谋 抓取 访客数据 JS版/谷歌插件版
    EF 多表关联
    个人 圈外同学 对比分析
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/2479472.html
Copyright © 2011-2022 走看看