Oracle行轉列通用過程

2021-05-25 12:05:39 字數 1950 閱讀 4158

create

orreplace

procedure

row_to_col(tabname

invarchar2

,group_col

invarchar2

, column_col

invarchar2

,value_col

invarchar2

,aggregate_func

invarchar2

default

'max',

colorder

invarchar2

default

null

,roworder

invarchar2

default

null

, when_value_null

invarchar2

default

null

,viewname

invarchar2

default

'v_tmp')

authid

current_user

assqlstr

varchar2

(2000):=

'create or replace view '||

viewname||'

as select '||

group_col||'

';c1 sys_refcursor;

v1 varchar2

(100

);begin

open

c1 for

'select distinct '||

column_col||'

from '||

tabname

||case

when

colorder

isnot

null

then

'order by '||

colorder

end;

loop

fetch

c1 into

v1;exit

whenc1%

notfound;

sqlstr:

=sqlstr

||chr(10)

||','

||case

when

when_value_null

isnot

null

then

'nvl(

'end

||aggregate_func||'

(decode(to_char('||

column_col||'

),'''

||v1

||''','

||value_col||'

))'||case

when

when_value_null

isnot

null

then

chr(

44)

||when_value_null

||chr(

41)

end||'"

'||v1||'"

';endloop;

close

c1;sqlstr:

=sqlstr||'

from '||

tabname||'

group by '||

group_col

||case

when

roworder

isnot

null

then

'order by '||

roworder

end;

execute

immediate sqlstr;

endrow_to_col;

行轉列通用儲存過程

1.建立行轉列通用儲存過程 sql create or replace procedure row to col tabname in varchar2,group col in varchar2,column col in varchar2,value col in varchar2,aggreg...

oracle 行轉列,多行轉列

問題描述 應公司要求,設計功能,乙個id,對應不同的值,展示的時候不同的值拼接展示,如何實現 解決思路 1 拼接字串,想到了 oracle function 這樣肯定能實現,但是比較麻煩 2 oracle 自帶的乙個函式 wm concat 函式 非常給力 上 測試表1 create table c...

oracle行轉列實踐

在oracle 11g中,oracle 增加了2個查詢 pivot 行轉列 和unpivot 列轉行 pivot 聚合函式 for 列名 in 型別 其中 in 中可以指定別名,in中還可以指定子查詢 行轉列 select org id,item,sum value from rhsa gcfx r...