码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-02-20 09:52:32      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:rac   oracl   一个   --   .com   sql语句   microsoft   inf   val   

首先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里面的用法区别

标签:rac   oracl   一个   --   .com   sql语句   microsoft   inf   val   

原文地址:https://www.cnblogs.com/wshx940621/p/10197500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!