zoukankan      html  css  js  c++  java
  • [No0000128]SQL纵表与横表互转

    1.纵表转横表:

    纵表结构:Table1

    转换后的横表结构:

    Sql示例代码:

    select username,

    sum(case Course when '语文' then Grade else 0 end) as 语文,

    sum(case Course when '数学' then Grade else 0 end) as 数学,

    sum(case Course when '英语' then Grade else 0 end) as 英语

    from Table1

    group by username

    2、横表转纵表:

    横表结构: TableA

    ID

    姓名

    语文

    数学

    英语

    1

    张三

    80

    90

    70

    2

    李四

    90

    85

    95

    3

    王五

    88

    75

    90

    转换后的纵表结构:

    ID

    姓名

    科目

    成绩

    1

    张三

    语文

    80

    2

    张三

    数学

    90

    3

    张三

    英语

    70

    4

    李四

    语文

    90

    5

    李四

    数学

    80

    6

    李四

    英语

    99

    7

    王五

    语文

    85

    8

    王五

    数学

    96

    9

    王五

    英语

    88

    SQL示例代码:

    SELECT 姓名,'语文' AS 科目,语文 AS 成绩 FROM TableA UNION ALL

    SELECT 姓名,'数学' AS 科目,数学 AS 成绩 FROM TableA UNION ALL

    SELECT 姓名,'英语' AS 科目,英语 AS 成绩 FROM TableA ORDER BY 姓名,科目 DESC;

    case 变量表达式 --对某个'变量表达式'进行判断

    when 值 --当'变量表达式'是某个'值'时

    then 返回值表达式 --返回'返回值表达式'值

    [when...then........] --可以进行多次判断

    [else 其他情况返回值表达式] --不符合所有when后面的就是其他情况了

    end --结束

  • 相关阅读:
    SQL Server 2005 System Views Map
    SQL语句实现移动数据库文件
    重写系统存储过程:sp_spaceused
    MSSQL2005中的架构与用户
    根据时间段计算有n年n月n天
    Linux中的环境变量 (转)
    计算工龄,格式为n年n月n天
    学习递归CTE
    分区表应用例子
    根据备份文件直接还原数据库
  • 原文地址:https://www.cnblogs.com/Chary/p/No0000128.html
Copyright © 2011-2022 走看看