伍婷 2015-04-21 02:20 采纳率: 0%
浏览 1348

oracle如何实现类似时间差的行转多行

初始表数据为:
zd1 zd2 zd3
1 a1 201502
1 b1 201504
2 a1 201503
2 b1 201506
2 a2 201508
实现效果为:
zd1 zd2 zd3
1 a1 201502
1 a1 201503
1 b1 201504
2 a1 201503
2 a1 201504
2 a1 201505

2 b1 201506
2 b1 201507
2 a2 201508

斜体为补充数据,规则为:在zd3的差值中zd1、zd2以上一条zd1相同的值补齐,zd3加1补充。

  • 写回答

1条回答 默认 最新

  • 清水依恋成 2015-04-21 02:46
    关注

    select * from (
    select zd1, zd2, zd3 from TTT
    union all
    select zd1, zd2, zd3+1 from TTT
    ) order by zd1

    如果zd3是datetime类型,直接上面就行,
    如果是普通的8位varchar,先转成to_date转成datetime,再加1操作,再to_char到8位varchar操作。

    评论

报告相同问题?