数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ORACLE行列转换-拼成字符串


发布日期:2020年06月13日
 
ORACLE行列转换-拼成字符串

前段时间使用ORACLE同事提出一个需求要求将有相同CODE的值连接成一个字符串这种小问题怎会难倒我于是提出方案!

Sql代码

建表语句

create table SP_ALERT_PA_GROUP

(

ID INTEGER not null

ALERTCODE VARCHAR()

PAINNERCODE VARCHAR()

)

insert into sp_alert_pa_group (ID ALERTCODE PAINNERCODE)

values ( AL R);

insert into sp_alert_pa_group (ID ALERTCODE PAINNERCODE)

values ( AL R);

insert into sp_alert_pa_group (ID ALERTCODE PAINNERCODE)

values ( AL R);

insert into sp_alert_pa_group (ID ALERTCODE PAINNERCODE)

values ( AL R);

要求显示的结果

ALERTCODE PAINNERCODE

AL RR

AL RR

使用自定义函数

Sql代码

CREATE OR REPLACE FUNCTION getpa(alertcode VARCHAR)

RETURN VARCHAR

IS

pastr VARCHAR();

BEGIN

FOR cur IN (SELECT painnercode FROM sp_alert_pa_group WHERE alertcode=alertcode) LOOP

pastr := pastr||curpainnercode||;

END LOOP;

RETURN pastr;

END;

然后使用下面的SQL查询即可!

SELECT DISTINCT alertcode getpa(alertcode) FROM sp_alert_pa_group f

使用ORACLE内置函数实现只支持G以上

Sql代码

SELECT wmsyswm_concat(painnercode) FROM sp_alert_pa_group

这个简单明了但是我这里不能用哎数据库版本的问题太低

使用SQL语句迭代(sys_connect_by_path)

Sql代码

select substr(max(sys_connect_by_path(painnercode))) paramcode

from (select a*row_number()over(order by painnercode) rn from sp_alert_pa_group a )

start with rn=

connect by rn=prior rn

上一篇:oracle与用户角色权限相关的视图

下一篇:数据库设计中的反规范技术探讨