【问题标题】:Creating a loop sequence and duplicating rows within one table在一个表中创建循环序列并复制行
【发布时间】:2019-12-02 10:21:20
【问题描述】:

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

  • 订单编号(编号)
  • 产品(短文本)
  • 材料(短文本)
  • 日期(日期)
  • 金额(数量)
  • 发件人(编号)
  • 收件人(号码)

[From] 和 [To] 重复每个 [Order Nr] 如何在 MS Access 中创建一个新列,其中包含使用列 [From] 和 [To] 中的边界值作为边界值的序列? (我尝试过 concat,但它返回的是短文本)。

最重要的是,我想复制其他列中的所有值并将它们相应地粘贴到新创建的行中。 (我猜这将是一个自加入,但我不知道如何进行)

作为我的序列边界的值 From 和 To 没有模式(这意味着我永远不知道 [Order] 中有多少 [Products] 以及它们将如何分配)。

进入

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    您可以加入序列表以获得所需的结果。

    就个人而言,我使用基于MSysObjects 的序列生成查询,但其他人主张只使用带有数字的表。

    首先,创建序列表/查询,我的命名为 qSequence:

    SELECT DISTINCT Abs(ones.ID Mod 10)+(Abs(tens.ID Mod 10)*10)+1 AS Sequence
    FROM MSysObjects AS ones, MSysObjects AS tens;
    

    这只是生成一个 1 到 100 的序列,我假设满足您的需求。

    那么,我们就可以加入序列表了:

    SELECT MyTable.*, qSequence.Sequence
    FROM MyTable, qSequence
    WHERE qSequence.Sequence BETWEEN MyTable.From AND MyTable.To
    

    【讨论】:

    • 再次谢谢你,请问MSysObjects是如何创建的,我从哪里获取它?
    • @OlaDavids MSysObjects 是默认表之一,它始终存在并且始终填充至少足够的对象,因此您可以使用它来生成这样的序列。如果您在导航窗格中选中显示系统表,您可以看到它。或者,您可以只使用一个表,其中包含一个名为 Sequence 的字段,其数字从 1 到 100(或任何您想要的最大序列数)。
    • 非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2019-11-04
    • 2022-07-12
    相关资源
    最近更新 更多