动态转置,一行变多行

在Oracle 11g中,用户希望将一个包含多列数据的查询结果转换为多行显示,每行显示操作人和对应的操作时间。通常对于少量字段可以通过UNION实现,但当列数过多时,处理变得复杂。集算器提供了一种解决方案,通过创建序表和处理记录,将一行数据转换为多行记录。
摘要由CSDN通过智能技术生成

【问题】

我从一个表中查询出一条数据,数据中有很多字段,例如:
列名:操作人1      操作时间1          操作人2        操作时间2          操作人3        操作时间   3    .............
数据:小明             20140304          小红              20140909          小王               20150101     .............

现在我想要的sql是这样一个实现结果,
 小明    20140304 
 小红    20140909
 小王    20150101
......
也就是一行转成多行,包含两列.
求大神给出一个具体的sql,我自己写的个感觉太复杂了,有没什么好的sql能简单解决。用的是oracle 11g

【回答】

如果字段不是很多可以直接纵向union起来,但如果列太多,甚至多个表(列数不同)都要做这样的查询,就比较复杂了。这种时候用SPL写起来比较简单(假定表时只有一行数据):

A
1 =oracle.query("select * from tb1")(1)
2 =create(操作人,操作时间)
3 >A2.record(A1.array())

执行脚本前,将数据保存在数据库的表t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值