码迷,mamicode.com
首页 > 数据库 > 详细

SQL纵表与横表互转

时间:2018-04-13 11:05:13      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:end   lap   结束   sum   png   none   --   转换   返回   

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纵表与横表互转

标签:end   lap   结束   sum   png   none   --   转换   返回   

原文地址:https://www.cnblogs.com/Chary/p/8818176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!