PIVOT在SQL Sever裏面和Oracle裏面的用法區別
阿新 • • 發佈:2019-02-20
實例 oracl == sql語句 一個 技術分享 value sof sql
首先pivot是一個列轉行的函數,反向用是unpivot(行轉列)。
在SQL sever中可以這麽寫
SELECT * FROM [TABLE] /*數據源*/ AS A PIVOT ( MAX/*聚合函數*/(COL1/*行轉列後 列的值*/) FOR A.COL2/*需要行轉列的列*/ IN ([VALUE1],[VALUE2],[VALUE3].../*列的值*/) ) AS B
在Oracle中可以這麽寫
select *
from tab
pivot(max /*聚合函數*/
(col1 /*行轉列後 列的值*/)
for a.col2 /*需要行轉列的列*/
in(‘value1 ‘ as v1, ‘value2‘ as v2, ‘value3‘ as v3.. . /*列的值*/)
--==========================================================
先放一個sql sever的實例
以下是原表:
sql語句做處理:
select t.[1] as o, t.[2] p, t.[3] as q from tab_test1 as p PIVOT(max(p.b) FOR p.a IN([1], [2], [3])) AS T
結果如下:
--===========================================
再來一個Oracle的實例,以下是原表:
處理sql語句:
select * from TAB_TEST pivot(min(B) for A in(‘1‘ t1, ‘2‘ t2, ‘3‘ t3))
結果如下:
PIVOT在SQL Sever裏面和Oracle裏面的用法區別