zoukankan      html  css  js  c++  java
  • 交叉表 学习

    假设有四个学科 英 物 数 化
    每个每个学科添加一个数据

    CREATE TABLE [dbo].[成绩] (
     [id] [int] IDENTITY (1, 1) NOT NULL ,
     [姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
     [学科] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
     [成绩] [int] NULL
    ) ON [PRIMARY]

    看一下这个会理好理解
    declare @a varchar(2000)
    set @a=''
    select @a=@a+','+cast(id as varchar) from 成绩
    print @a

    select 姓名,
    sum(case 学科 when '英语' then 成绩 else 0 end) as 英语,
    sum(case 学科 when '物理' then 成绩 else 0 end) as 物理,
    sum(case 学科 when'数学' then 成绩 else 0 end) as 数学,
    sum(case 学科 when'化学' then 成绩 else 0 end) as 化学
    from 成绩 group by 姓名

     注: 把字段放到 when 后面可以进行多条件的判断
     sum(case when 学科<>'英语' then 成绩 else 0 end) as 不是英语,

  • 相关阅读:
    资源限制
    垃圾收集器
    GC日志
    happens-before
    maven相互依赖导致无法编译成功
    LVM-逻辑卷常用命令和示意图
    取消RAID5
    扩展RAID5的容量
    模拟RAID5损坏
    创建RAID5
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/243741.html
Copyright © 2011-2022 走看看