Sql 在现有表中创建序列并复制行
我有一个简短的表格,其中包含: 产品短文本 材料短文本 数量 从数字 计数 如何在MS Access中创建一个包含序列的新列,该序列使用列from和To中的值作为边界?我尝试了concat,但它返回短文本 除此之外,我希望复制其他列中的所有值,并将它们相应地粘贴到新创建的行中 序列边界的起始值和终止值没有模式 进入:Sql 在现有表中创建序列并复制行,sql,ms-access,Sql,Ms Access,我有一个简短的表格,其中包含: 产品短文本 材料短文本 数量 从数字 计数 如何在MS Access中创建一个包含序列的新列,该序列使用列from和To中的值作为边界?我尝试了concat,但它返回短文本 除此之外,我希望复制其他列中的所有值,并将它们相应地粘贴到新创建的行中 序列边界的起始值和终止值没有模式 进入: 您可以在此处尝试日历/序列表方法,将包含整个序列的表内部联接到当前表: SELECT t2.Product, t2.Material, t2.Amount
您可以在此处尝试日历/序列表方法,将包含整个序列的表内部联接到当前表:
SELECT
t2.Product,
t2.Material,
t2.Amount,
t2.[From],
t2.[To],
t1.Sequence
FROM
(
SELECT 1 AS Sequence FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 2 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 3 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 4 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 5 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 6 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 7 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 8 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 9 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
UNION
SELECT 10 FROM (SELECT COUNT(*) FROM MSysResources) AS dual
) t1
LEFT JOIN yourTable t2
ON t1.Sequence BETWEEN t2.[From] AND t2.[To]
ORDER BY
t1.Sequence;
就我个人而言,我不喜欢使用我无法控制的数据集(如系统表)来生成序列,而是建议创建一个名为数字的表,其中包含一个名为长整数数据类型id的字段: 然后可以使用整数0到9填充此表: 并使用如下查询,该查询实现a(也称为a)以生成数字1-100: 从编号n1、编号n10中选择10*n10.id+n1.id+1作为n 如果您的序列可能超过100,则可能会出现以下情况,从而产生数字1-1000: 从编号n1、编号n10、编号n100中选择100*n100.id+10*n10.id+n1.id+1作为n 您可以继续按照适合数据的数量级重复模式 定义并填充数字表后,您可以使用以下查询为数据生成所需的结果: 选择 t、 产品,t.材料,t.数量,t.起始,t.至,序列号 从…起 你的桌子, 从数字n1、数字N10S中选择10*n10.id+n1.id+1作为n 哪里 s、 n在t.from和t.to之间 订购人 t、 产品,s.n
将您的表更改为表名对于您的顺序,我更喜欢从MSysObjects中选择不同的AbsID MOD 10+1,原因有二:更简短,如果有人选择删除默认主题,MSysResources可能为空。@ErikA我作为Access开发人员很弱。很高兴知道有更好的方法生成序列。