2

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

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

表 A 包含客户 ID、交易名称(已售、已购买、已交换)的列,以及他们是否曾经进行过该交易的列。他们是否完成了该交易将取决于他们完成该交易的次数,如表 B 中记录的那样。因此,例如,如果客户 12 卖出了 3 件东西,购买了 0 件东西,并交换了 1 件东西,那么他们将有: - 表 B 中的一行 - 表 A 中的三行,true 表示已售出,false 表示已购买,true 表示已交换。

谁能帮我开始一个基本的结构?我以前从来没有根据另一个表的结果填充另一个表,所以这对我来说似乎有点令人生畏,我不确定我应该从哪里真正开始。

我正在使用 Microsoft Access 2010。

感谢您的时间!

4

1 回答 1

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
 )
于 2013-07-02T17:01:29.760 回答