PIVOT在SQL Sever里面和Oracle里面的用法区别

Posted wshx940621

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIVOT在SQL Sever里面和Oracle里面的用法区别相关的知识,希望对你有一定的参考价值。

首先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里面的用法区别的主要内容,如果未能解决你的问题,请参考以下文章

mysql, sql sever , oracle

oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了

Oracle SQL - 在 PIVOT 之前更新值

在 Oracle SQL 中按报告日期的 PIVOT 值

ORACLE SQL:如何在 Pivot 函数中将 NULL 替换为 0

Oracle SQL - 如何使用 PIVOT 进行计数