需要根据从表中提取的信息将行插入表中

时间:2013-07-02 15:30:07

标签: sql database ms-access database-design ms-access-2010

我需要根据另一个表中的行填充表。我们将调用必须填充表A的表,然后用于填充表,表B.

表B列出了客户ID以及他们已完成的不同交易类型的数量(例如,已售出,已购买,已交换)。

表A包含客户ID,交易名称(已售出,已购买,已交换)的列,以及是否曾执行该交易的列。他们是否已完成该交易将取决于他们完成该交易的次数,如表B所示。例如,如果客户12已售出3件物品,购买0件物品,并交换1件物品,那么他们会: - 表B中的一行 - 表A中的三行,卖出时为true,购买时为false,交换时为true。

任何人都可以帮我开始这个基本结构吗?我以前从未根据另一张桌子的结果填充另一张桌子,所以这对我来说似乎有点令人生畏,我不确定我应该从哪里开始。

我正在使用Microsoft Access 2010。

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

我假设表B中的源数据都在一行中,因此您的字段是customer_id,sold,purc,exch。我还假设你确实希望用这些数据填充表A.如果你的表B数据是多行,请告诉我,我会修改它。如果您只想编写查询而不填充新表,请删除外部SELECT ... INTO语句。

SELECT customer_id, trans_type, trans_status INTO A
FROM (
      SELECT customer_id
          , "SOLD" AS trans_type
          , SWITCH (sold = 0, "FALSE", sold > 0, "TRUE") AS trans_status  
      FROM B
      UNION ALL
      SELECT customer_id
          , "PURCHASED" AS trans_type
          , SWITCH (purc = 0, "FALSE", purc > 0, "TRUE") AS trans_status  
      FROM B
      UNION ALL
      SELECT customer_id
          , "EXCHANGED" AS trans_type
          , SWITCH (exch = 0, "FALSE", exch > 0, "TRUE") AS trans_status  
      FROM B
      ORDER BY customer_id, trans_type
 )