zoukankan      html  css  js  c++  java
  • sql server 行列互转

    1 列转行

    测试脚本

    create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
    
    insert into tb values('张三','语文',74)
    
    insert into tb values('张三','数学',83)
    
    insert into tb values('张三','物理',93)
    
    insert into tb values('李四','语文',74)
    
    insert into tb values('李四','数学',84)
    
    insert into tb values('李四','物理',94)
    
    go

    转化脚本

    select 姓名 , 
    max(case 课程 when '语文' then 分数 else 0 end) 语文, 
    max(case 课程 when '数学' then 分数 else 0 end) 数学 ,
    max(case 课程 when '物理' then 分数 else 0 end) 物理 
    from tb  group by 姓名

    附加求总分和平均分

    select 姓名 , 
    max(case 课程 when '语文' then 分数 else 0 end) 语文, 
    max(case 课程 when '数学' then 分数 else 0 end) 数学 ,
    max(case 课程 when '物理' then 分数 else 0 end) 物理 ,
    sum(分数) 总分,
    cast(avg(分数*1.0)as decimal(18,2)) 平均分
    from tb  group by 姓名

    2 列传行

    测试脚本

    create table tbs(姓名 varchar(10),语文 int,数学 int,物理 int)
    
    insert into tbs values('张三',74,83,93)
    
    insert into tbs values('李四',74,84,94)
    
    go

    转化脚本

     select 姓名,课程 ='语文',分数=语文 from tbs union 
    
     select 姓名,课程='数学',分数=数学 from tbs union 
    
     select 姓名,课程='物理',分数=物理 from tbs
  • 相关阅读:
    GDB命令行最基本操作
    mysql待整理
    python生成二维数组
    python2.7执行shell命令
    使用matplot做图--sin图像
    python--Numpy简单实用实例
    python多线程的使用
    pyv8使用总结
    QDialog:输入对话框、颜色对话框、字体对话框、文件对话框
    pyqt重写键盘事件+获取信号发送对象
  • 原文地址:https://www.cnblogs.com/saodiseng2015/p/4962023.html
Copyright © 2011-2022 走看看