纵表与横表互转实例(转)

Posted 风浪子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纵表与横表互转实例(转)相关的知识,希望对你有一定的参考价值。

1.纵表转横表:

纵表结构:Table1

转换后的横表结构:

Sql示例代码:

1
2
3
4
5
6
7
8
9
10
11
select username,
 
sum(case Course when \'语文\' then Grade else endas 语文,
 
sum(case Course when \'数学\' then Grade else endas 数学,
 
sum(case Course when \'英语\' then Grade else endas 英语
 
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示例代码:

 

1
2
3
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之纵表与横表互转

SQL纵表与横表互转

oracle纵表转横表

sql 纵表转横表

mysql 纵表转横表,高手请支招

oracle sql 中 如何实现table的行列转换?