其他分享
首页 > 其他分享> > 横表、纵表转换

横表、纵表转换

作者:互联网

纵表结构 TableA 

Name

Course

Grade

张三

语文

75

张三

数学

80

张三

英语

90

李四

语文

95

李四

数学

55

 

横表结构 TableB

Name

语文

数学

英语

张三

75

80

90

李四

95

55

0

先理解:

    select Name,(case Course when ‘语文‘ then Grade else 0 end) as 语文, (case Course when ‘数学‘ then Grade else 0 end) as 数学, (case Course when ‘英语‘ then Grade else 0 end) as 英语 from TableA

 

然后理解标准答案:

select Name,

Proddetlicon

nav

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 TableA

group by Name

 

 

横表转纵表的"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示例:

SELECT   姓名,'语文'   AS     科目,语文   AS   成绩   FROM   TEST_H2Z   UNION   ALL 
SELECT   姓名,'数学'   AS     科目,数学   AS   成绩   FROM   TEST_H2Z   UNION   ALL 
SELECT   姓名,'英语'   AS     科目,英语   AS   成绩   FROM   TEST_H2Z
ORDER BY 姓名,科目 DESC

   

 

标签:语文,转换,Grade,Course,横表,纵表,90,数学,英语
来源: https://www.cnblogs.com/hanningHNN/p/13775215.html