在MS Access的查询中创建重复记录

时间:2014-03-17 13:07:14

标签: sql ms-access

我在Microsoft Access数据库中有以下表格:

TableName: Cabinets
RoomID - Number
Wall ID - Number
Cabinet ID - Number
Width - Number (double)
Height - Number (double)
Depth - Number (double)
Quantity - Number

我需要做的是创建一个查询,该查询将在“数量”字段中指定的次数复制每一行。举个例子,我们说我有以下数据:

Room ID    Wall ID     Cabinet ID     Width     Height     Depth     Quantity
1          1           1              30        34.5       24        1
1          1           2              42        34.5       24        1
1          1           3              18        34.5       24        2

我需要一个可以创建以下内容的查询:

Room ID    Wall ID     Cabinet ID     Width     Height     Depth   
1          1           1              30        34.5       24     
1          1           2              42        34.5       24       
1          1           3              18        34.5       24       
1          1           3              18        34.5       24       

现在,在其他问题中,我已经看到我可以创建一个数字'不幸的是,为了实现这一点,我根本无法改变表格。事实上,我对这个数据库的实际操作非常有限。

这是我能做的:

  1. 创建一个将提取数据的查询
  2. 创建一个查询,添加一个'视图'运行时到数据库(在运行拉取数据的查询之前)
  3. 非常感谢任何可以给予的帮助。非常感谢你的进步。

1 个答案:

答案 0 :(得分:0)

嗯,这在Access中非常痛苦,但你可以动态创建一个数字表。我们假设cabinet_id实际上是cabinets表中的唯一ID。

select c.*
from cabinets c left join
     (select (select count(*) from cabinets c2 where c2.cabinet_id <= c.cabinet_id) as n
      from cabinets c
     ) n
     on n.n <= c.quantity;

这使用cabinets表生成数字列表,使用相关子查询来获取数字。请注意,这假定quantity始终小于此表中的行数。

如果您知道ID没有间隙并从1开始,您可以将其简化为:

select c.*
from cabinets c left join
     (select cabinet_id) as n
      from cabinets c
     ) n
     on n.n <= c.quantity;