Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在现有表中创建序列并复制行_Sql_Ms Access - Fatal编程技术网

Sql 在现有表中创建序列并复制行

Sql 在现有表中创建序列并复制行,sql,ms-access,Sql,Ms Access,我有一个简短的表格,其中包含: 产品短文本 材料短文本 数量 从数字 计数 如何在MS Access中创建一个包含序列的新列,该序列使用列from和To中的值作为边界?我尝试了concat,但它返回短文本 除此之外,我希望复制其他列中的所有值,并将它们相应地粘贴到新创建的行中 序列边界的起始值和终止值没有模式 进入: 您可以在此处尝试日历/序列表方法,将包含整个序列的表内部联接到当前表: SELECT t2.Product, t2.Material, t2.Amount

我有一个简短的表格,其中包含:

产品短文本 材料短文本 数量 从数字 计数 如何在MS Access中创建一个包含序列的新列,该序列使用列from和To中的值作为边界?我尝试了concat,但它返回短文本

除此之外,我希望复制其他列中的所有值,并将它们相应地粘贴到新创建的行中

序列边界的起始值和终止值没有模式

进入:


您可以在此处尝试日历/序列表方法,将包含整个序列的表内部联接到当前表:

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开发人员很弱。很高兴知道有更好的方法生成序列。