1. 程式人生 > >SQL縱表與橫表互轉

SQL縱表與橫表互轉

padding else 結束 esc ase when sum -a order

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縱表與橫表互轉