我在Access中有一个类似于下面第一个表的表,上面有交易的行。这些事务可以是两个独立的产品。ProductOne和ProductTwo。我显示了两个事务--一个用于单个产品,一个用于两个产品。
我现有的表包含两个产品的成本和销售列。我的目标是将我所拥有的东西转换为一个表,在两个单独的行上列出COS和Payable(来自第一个表中的产品Cost金额)。然后我需要对零售(来自第一个表中的产品销售列和金额)做同样的处理。
对于第一个(现有)表中的每一行,在生成的表格中,每个产品都会有三条独立的行(COS、Payable和Retail)。例如,客户Smith在结果表中会有3条记录,因为他们只购买了ProductOne。但是对于客户Jones来说,由于他们同时购买了两种产品,所以在结果表中会有6条记录。
有没有一个查询可以实现这个功能? 我觉得这不是相当复杂,就是我想多了。
我认为你将需要运行一系列查询(插入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。
请注意。