1.创建表:

create table test(id int,name varchar(20),quarter int,profile int))

insert into test values(1,'a',1,1000);

insert into test values(1,'a',2,1000);

insert into test values(1,'a',3,1000);

insert into test values(1,'a',4,1000);

insert into test values(2,'a',1,1000);

insert into test values(2,'a',2,1000);

insert into test values(2,'a',3,1000);

insert into test values(2,'a',4,1000);

2. Pivot 用法

select id,name,[1]as '1th Season',[2] as '2th Season',[3] as '3th Season',[4] as '4th Season'

from test

pivot

sum(profile)

for quarter in ([1],[2],[3],[4])

)as pvt

select * from test

3.Unpivot

select * from test2

select id,name,quarters,profiles

from test2

unpivot

profiles

for quarters in ([Q1],[Q2],[Q3],[Q4])

as unpvt

1.创建表:create table test(id int,name varchar(20),quarter int,profile int))insert into test values(1,'a',1,1000);insert into test values(1,'a',2,1000);insert into test values(1,'a',3,1000);insert into t...
文章目录方法一: Oracle 行转列 pivot 函数方法二:使用MAX DECODE 实现 方法一: Oracle 行转列 pivot 函数 语法: pivot (任一聚合函数 for 需要转列的值所在列名 in (需转为列名的值)) 原数据格式如下: SELECT rspfd.FORECAST_YEAR , --年份 rspfd.INDEX_CODE , --指标代码 rspfd.INDEX_VALUE --指标值 FROM RPT_STK_PROFIT_FORECAST_DATA r
众所周知,静态 SQL 的输出结构必须也是静态的。对于经典的行转列问题,如果行数不定导致输出的列数不定,标准的答案就是使用动态 SQL , 到11G里面则有XML结果的 PIVOT 。 但是 oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了。上代码 直接点。 CREATE OR REPLACEtype Pivot Impl_shx as object( ret_type a...
遇到一个难题,需要将单列数据根据分列显示,需要用到 Pivot 语法。 参照现有的query,写了一段类似以下script片段的 sql 语句,问题搞定。经验总结:能用 SQL 搞定的问题,就不要人工去处理(效率低、易出错)。 SELECT * FROM ( SELECT DISTINCT ra.HDP_ID,
可以使用 pivot _table函数的aggfunc参数来进行去重计数,具体代码如下: df. pivot _table(index=['列1', '列2'], values='需要计数的列', aggfunc=pd.Series.nunique) 其中,index参数指定需要进行分组的列,values参数指定需要进行计数的列,aggfunc参数指定计数方式,pd.Series.nunique表示去重计数。