将Access表中的数据转换为新表中的多行。

问题描述 投票:0回答:1

我在Access中有一个类似于下面第一个表的表,上面有交易的行。这些事务可以是两个独立的产品。ProductOne和ProductTwo。我显示了两个事务--一个用于单个产品,一个用于两个产品。

我现有的表包含两个产品的成本和销售列。我的目标是将我所拥有的东西转换为一个表,在两个单独的行上列出COS和Payable(来自第一个表中的产品Cost金额)。然后我需要对零售(来自第一个表中的产品销售列和金额)做同样的处理。

对于第一个(现有)表中的每一行,在生成的表格中,每个产品都会有三条独立的行(COS、Payable和Retail)。例如,客户Smith在结果表中会有3条记录,因为他们只购买了ProductOne。但是对于客户Jones来说,由于他们同时购买了两种产品,所以在结果表中会有6条记录。

Table1 to Table2 map

有没有一个查询可以实现这个功能? 我觉得这不是相当复杂,就是我想多了。

ms-access ms-access-2016
1个回答
1
投票

我认为你将需要运行一系列查询(插入ProductOne CostPayableRetail和ProductTwo CostPayableRetail)。

只看Product1,你的查询应该是这样的。

INSERT INTO tblCustomer2 
(CustomerNumber, CustomerName, PostingCategory, PostingAmount, Description) 
SELECT
CustomerNumber, CustomerName, "COS", ProductOneCost, "ProductOne"
FROM tblCustomer1
WHERE ProductOneCost>0
INSERT INTO tblCustomer2 
(CustomerNumber, CustomerName, PostingCategory, PostingAmount, Description) 
SELECT
CustomerNumber, CustomerName, "Payable", -ProductOneCost, "ProductOne"
FROM tblCustomer1
WHERE ProductOneCost>0
INSERT INTO tblCustomer2 
(CustomerNumber, CustomerName, PostingCategory, PostingAmount, Description) 
SELECT
CustomerNumber, CustomerName, "Retail", -ProductOneSale, "ProductOne"
FROM tblCustomer1
WHERE ProductOneCost>0

然后按照类似的过程来查询ProductTwo。

请注意。

© www.soinside.com 2019 - 2024. All rights reserved.