sql - 基于 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
我需要分解数量并拥有那么多行
谢谢
解决方案
这是使用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
. 但答案的关键是标准join
和on
标准。
推荐阅读
- python - 使用正确的时区偏移获得结果(Postgresql,Django)
- jquery - 获取ajax请求失败的原因
- python - pyinstaller build 中的 Matplotlib 代码即使没有导入
- python - Pyinstaller 找不到 rtsp __doc__ 文件
- c# - 如果采用日期时间,如何使 ASP.NET MVC 日期时间选择器表单字段显示消息?
- spring - 使用 Mapstruct 映射对象的问题
- jenkins - Jenkins 部署到 K8s 如何集成?(Kubernetes 持续部署插件)
- json - 比较包含 JSON 对象的 JSON 数组
- sql - 如何从mssql中的json列获取数据
- c# - 互操作/COM - 无法使用现有值分配 ref 参数 - 类型不匹配