首页 > 解决方案 > 基于 1 列创建多行

问题描述

我目前有一张桌子,里面有数量。

ID       Code            Quantity
1        A               1
2        B               3
3        C               2
4        D               1

反正有没有写一个能让我得到的sql语句

ID       Code            Quantity
1        A               1
2        B               1
2        B               1
2        B               1
3        C               1
3        C               1
4        D               1

我需要分解数量并拥有那么多行

谢谢

标签: sql

解决方案


这是使用numbers表格的一个选项join

with numberstable as (
    select 1 AS Number
    union all
    select Number + 1 from numberstable where Number<100
    )
select t.id, t.code, 1 
from yourtable t 
    join numberstable n on t.quantity >= n.number 
order by t.id

请注意,根据您使用的数据库,这可能不是创建numbers表的正确方法。这适用于大多数支持common table expressions. 但答案的关键是标准joinon标准。


推荐阅读