• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sqlserver中查询横表变竖表的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

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

    您可能感兴趣的文章:
    • SQL Server纵表与横表相互转换的方法
    上一篇:使用FORFILES命令来删除SQLServer备份的批处理
    下一篇:sql server中批量插入与更新两种解决方案分享(存储过程)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sqlserver中查询横表变竖表的sql语句简析 sqlserver,中,查询,横表,变竖,