SQL竖表转横表 / 横表转竖表

竖表转横表

竖表结构:

Name

Course

Grade

张三

语文

75

张三

数学

80

张三

英语

90

李四

语文

95

李四

数学

55

 

转换后横表结构:

Name

语文

数学

英语

张三

75

80

90

李四

95

55

0

SQL语句:

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
竖表转横表

 

 

横表转竖表

横表结构:

ID

Name

Chinese

Math

English

1

张三

90

89

80

2

李四

95

76

38

3

王五

88

77

67

转换后竖表结构:

ID

姓名

科目

成绩

1

张三

语文

87

2

张三

数学

78

3

张三

英语

67

4

李四

语文

90

5

李四

数学

65

6

李四

英语

98

7

王五

语文

54

8

王五

数学

67

9

王五

英语

49

SQL语句:

1 select Name,'Chinese' as 科目,Chinese as 成绩 from tableb union all
2 select Name,'Math' as 科目,Math as 成绩 from tableb union all
3 select Name,'English' as 科目,English as 成绩 from tableb
4 order by Name,科目 desc
横表转竖表

 

 

posted @ 2014-04-19 16:46  李亚杰  阅读(1314)  评论(0编辑  收藏  举报