动态列转置

【问题】

Hi Guys,

I need to convert the data like below by using Actuate.

Either in iob level or Report level. Kinldy help us to achieve this. 

Source

col1, col2
1,10
1,20
1,30
2,10
2,40
3,70
3,60
3,10

Target

col1,  col2,   col3,   col4,  col5
 1       10       20       30     40
 2       10       40
 3       70       60       10

【回答】

这是行转列的问题,使用存储过程实现比较复杂,用 SPL 实现就比较简单了,代码如下:

A
1$select col1,col2 from tb
2=A1.group(col1)
3=create(${(A2.max(~.count())+1).("col"+string(~)).concat@c()})
4>A2.run(A3.record(~.col1|~.(col2)))

A1:执行 SQL 取数

A2:按 col1 分组

A3:根据“每组最大记录数 +1”建立空表

A4:循环每组数据,向空表追加数据,完成转置。

其实常见的实际业务中,多以 col2 中的值作为新二维表的列名(而不是 col1,col2 这种无意义的名字),更多转置运算可参考【集算器实现 SQL 转置的通用方法】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值