行列轉(zhuǎn)換在做報表分析時還是經(jīng)常會遇到的,今天就說一下如何實現(xiàn)行列轉(zhuǎn)換吧。 行列轉(zhuǎn)換就是如下圖所示兩種展示形式的互相轉(zhuǎn)換 假如我們有下表: SELECT * FROM student PIVOT ( SUM(score) FOR subject IN (語文, 數(shù)學(xué), 英語) ) 通過上面 SQL 語句即可得到下面的結(jié)果 PIVOT 后跟一個聚合函數(shù)來拿到結(jié)果,F(xiàn)OR 后面跟的科目是我們要轉(zhuǎn)換的列,這樣的話科目中的語文、數(shù)學(xué)、英語就就被轉(zhuǎn)換為列。IN 后面跟的就是具體的科目值。 當(dāng)然我們也可以用 CASE WHEN 得到同樣的結(jié)果,就是寫起來麻煩一點。
使用 CASE WHEN 可以得到和 PIVOT 同樣的結(jié)果,沒有 PIVOT 簡單直觀。 列轉(zhuǎn)行 假設(shè)我們有下表 student1 SELECT * FROM student1 UNPIVOT ( score FOR subject IN ('語文','數(shù)學(xué)','英語') ) 通過 UNPIVOT 即可得到如下結(jié)果: 我們也可以使用下面方法得到同樣結(jié)果
|
|