积累一点小Sql 表的纵横互转玩玩看

本文介绍如何使用SQL将纵向数据表转换为横向数据表,并反向操作。提供了具体示例,包括选择名称、按课程求和的成绩转换为横表,以及从横表结构中提取特定科目的成绩并转换为纵表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、纵表转横表:

纵表结构 TableA

1

横表结构 TableB

2

方法一:

   1: select Name,
   2: sum(case Course when ‘语文‘ then Grade else 0 end) as 语文,
   3: sum(case Course when ‘数学‘ then Grade else 0 end) as 数学,
   4: sum(case Course when ‘英语‘ then Grade else 0 end) as 英语
   5: from TableA
   6: group by Name
   7:  

2、横表转纵表的"SQL"示例
横表结构: TEST_H2Z
      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示例:

 1: SELECT 姓名,'语文' AS科目,语文   AS   成绩   FROM   TEST_H2Z   UNION   ALL 
 2: SELECT 姓名,'数学' AS  科目,数学   AS   成绩   FROM   TEST_H2Z   UNION   ALL 
 3: SELECT 姓名,'英语' AS  科目,英语   AS   成绩   FROM   TEST_H2Z
 4: ORDER BY 姓名,科目 DESC;

转载于:https://www.cnblogs.com/sunBolg/archive/2012/09/19/2693347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值