如何用 SQL 将一条记录生成多条相同的记录

【问题】

是这样的,有一个物品清单表,物品清单有一个数量的字段,一般都是>1的数量值,现在需要分解在一个表里,把>1的数量值,按多少就生成多少条相同的记录,有什么高效的办法吗
物品表(字段如下):
物品编号,物品名称,数量
C1-23    测试仪    3
C3-11    显微镜     2
如何变成:
物品编号,物品名称,数量
C1-23    测试仪   1
C1-23    测试仪   1
C1-23    测试仪   1
C3-11    显微镜     1
C3-11    显微镜     1

【回答】

不同数据库间实现方式不同,在MSSQL中可以使用该表与master..spt_values关联实现:

select t.物品编号,物品名称,1 数量 from 物品表 t

join master..spt_values s on s.type = 'P' and 数量 > s.number

       通用的方案可以用SPL来做,循环函数写起来简单易懂:

A
1$select物品编号,物品名称,数量 from 物品表
2=A1.conj(数量*[~]).run(数量=1)

A1:sql取数

A2:通过“数量*[~]”将每条记录按照“数量”倍复制一个新序列,再通过conj将这些序列成员合并,最后通过run将合并后的“数量”列值重新赋值为1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值