开发者社区 问答 正文

条件地从表A插入表B

我有一个带有以下各列的表A

Name age phoneNumber
A     26 12345
B     34 87654
C     5  98765

我的输出表还包含相同的列名,但没有数据

我需要生成如下所述的输出表

Name age phoneNumber
A     10 12345
A     10 12345
A     6 12345
B     10 87654
B     10 87654
B     10 87654
B     4 87654
C     5  98765

那就是我每次都会在输入表中将年龄减去10直到年龄<10,如果年龄小于10,则将其移动到输出表中

任何人都可以指导我如何执行此操作以获得所需的输出

展开
收起
祖安文状元 2020-01-05 14:48:48 385 分享 版权
1 条回答
写回答
取消 提交回答
  • 这看起来是使用递归cte的好地方:

    with cte as (
        select name, age, age % 10 new_age, phoneNumber, 1 i from mytable
        union all
        select name, age, 10, phoneNumber, i + 1
        from cte
        where age > i * 10
    )
    select name, new_age age, phoneNumber from cte order by name, age desc
    
    

    DB Fiddle上的演示:

    名称| 年龄| 电话号码
    :--- | -:| ----------:
    A | 10 | 12345
    A | 10 | 12345
    A | 6 | 12345
    B | 10 | 87654
    B | 10 | 87654
    B | 10 | 87654
    B | 4 | 87654
    C | 5 | 98765
    
    2020-01-05 14:49:03
    赞同 展开评论
问答地址: