1. 程式人生 > >PIVOT在SQL Sever裏面和Oracle裏面的用法區別

PIVOT在SQL Sever裏面和Oracle裏面的用法區別

實例 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裏面的用法區別