我需要根据另一个表中的行填充表。我们将调用必须填充表A的表,然后用于填充表,表B.
表B列出了客户ID以及他们已完成的不同交易类型的数量(例如,已售出,已购买,已交换)。
表A包含客户ID,交易名称(已售出,已购买,已交换)的列,以及是否曾执行该交易的列。他们是否已完成该交易将取决于他们完成该交易的次数,如表B所示。例如,如果客户12已售出3件物品,购买0件物品,并交换1件物品,那么他们会: - 表B中的一行 - 表A中的三行,卖出时为true,购买时为false,交换时为true。
任何人都可以帮我开始这个基本结构吗?我以前从未根据另一张桌子的结果填充另一张桌子,所以这对我来说似乎有点令人生畏,我不确定我应该从哪里开始。
我正在使用Microsoft Access 2010。
感谢您的时间!
答案 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
)