如何用 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)

A1sql取数

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