PIVOT函式,行轉列

2021-09-06 17:27:35 字數 573 閱讀 9557

pivot函式的格式如下

pivot(《聚合函式》([聚合列值]) for [行轉列前的列名] in([行轉列後的列名1],[行轉列後的列名2],[行轉列後的列名3],.......[行轉列後的列名n]))
select *

from shoppingcart as c

pivot(count(totalprice) for [week] in([1],[2],[3],[4],[5],[6],[7])) as t

我們可以看到pivot函式成功地將[shoppingcart]表列[week]的行值轉換為了七列,並且每一列統計轉換前的行數為1,這符合我們的預期結果。那麼根據我們前面定義的pivot函式轉換格式,在本例中我們有如下公式對應值:

另外如果我們在[行轉列後的列名]中只宣告了部分值,那麼pivot函式只會針對這些部分值做行轉列,而那些沒有被宣告為列的行值會在行轉列後被忽略掉。例如我們下面的語句宣告了只對錶shoppingcart中[week]列的1,2,3三個值做行轉列,但是實際上表shoppingcart中列[week]有1,2,3,4,5,6,7這7個值,那麼剩下的4到7就會被pivot函式忽略掉,如下所示:

oracle 行轉列 使用pivot函式

由上面的表轉變為下面的表 首先建乙個原始表,並插入測試資料,如下 create table sale2 月份 varchar2 20 銷售量 varchar2 20 insert into sale select 一月份 月份,1 銷售量 from dual union select 二月份 月份,...

行轉列 pivot 的應用

碰上了行轉列的問題,想起了 pivot,我們先看看 pivot 是什麼 pivot 通過將表示式某一列中的唯一值轉換為輸出中的多個列來旋轉錶值表示式,並在必要時對最終輸出中所需的任何其餘列值執行聚合 旋轉?不就是行轉列嗎?再看看語法 以下是帶批註的 pivot 語法。select 非透視的列 第乙個...

sql 行轉列使用pivot

select from select 商品名稱,銷售數量,月份 from tb helenzhou as t1 被行轉列的字段先在這裡列出來 pivot sum 銷售數量 for 月份 in 1 2 as t2 goup by 除了銷售數量和月份之外的的被上面列出來的其他字段 privot sum ...