每组多列数据转到同一行

例题描述和简单分析

有数据库表STAKEHOLDER,数据如下所示:

CLASS

NAME

SID

1

name1

001

1

name2

002

2

name3

003

2

name4

004

需要CLASS分组,并将其余列转到同一行,结果如下所示:

1 name1 001 name2 002

2 name3 003 name4 004

解法及简要说明

在集算器中编写脚本p1.dfx,如下所示: 


A

1

=connect("oracle")

2

=A1.query@x("SELECT * FROM STAKEHOLDER")

3

=A2.group(CLASS;~.(NAME/""/SID).concat(" ")).(#1/" "/#2)

简要说明:

A1   连数据源为oracle的数据库

A2  返回查询结果所组成的序表,结束时自动关闭数据库连接

A3   CLASS分组,将多列转到同一行

JAVA 集成这段代码的方法可参考:Java 如何调用 SPL 脚本》

问答搜集

https://stackoverflow.com/questions/64138971/how-to-merge-2-tables-into-1-row-with-multiple-entries-from-second-table-in-ora