Ms access 来自具有子查询的查询的交叉表查询
有谁能帮我解决一个交叉表查询问题,比较我们供应商的当前价格? 它所使用的select查询有一个子查询,该子查询只选择最新的价格进行价格比较,这非常适合我们需要的数据,请参见以下内容: qryPriceComp:Ms access 来自具有子查询的查询的交叉表查询,ms-access,ms-access-2010,ms-access-2007,Ms Access,Ms Access 2010,Ms Access 2007,有谁能帮我解决一个交叉表查询问题,比较我们供应商的当前价格? 它所使用的select查询有一个子查询,该子查询只选择最新的价格进行价格比较,这非常适合我们需要的数据,请参见以下内容: qryPriceComp: SELECT tblPriceComp.SupplyerID, tblPriceComp.ProductID, tblPriceComp.Effdt, tblPriceComp.CostPrice, tblProduct.Product, tblSupplier.Su
SELECT tblPriceComp.SupplyerID, tblPriceComp.ProductID,
tblPriceComp.Effdt, tblPriceComp.CostPrice,
tblProduct.Product, tblSupplier.Supplier
FROM tblSupplier INNER JOIN
(tblProduct INNER JOIN tblPriceComp ON tblProduct.ProductID = tblPriceComp.ProductID)
ON tblSupplier.SupplierID = tblPriceComp.SupplyerID
WHERE (((tblPriceComp.Effdt) In
(SELECT MAX(B.EffDt) AS MaxOfDt FROM tblPriceComp AS B
WHERE tblPriceComp.ProductID=B.ProductID
AND tblPriceComp.SupplyerID=B.SupplyerID
AND B.EffDt <= Date()+1)));
但运行时会出现一个错误,即tblPriceComp.ProductID和tblSupplier.SupplierID都无效。我尝试将它们添加为周长,但运行时会出现一个输入ID号的框,这不好,因为我们希望看到所有ProductID和SupplyerID。如果有人能帮忙,我们将不胜感激 不是真正的解决方案,而是一个可用的解决方案: 将
qryPriceComp
更改为INSERT-INTO-tentable
查询,然后将交叉表查询基于tentable
在每次插入运行之前,必须执行一个
DELETE*FROM tentable
。不是真正的解决方案,而是一个可用的解决方法:
将qryPriceComp
更改为INSERT-INTO-tentable
查询,然后将交叉表查询基于tentable
在每次插入运行之前,必须执行一个
DELETE*FROM tentable
。确切的错误消息是什么?运行交叉表查询时,我得到“Microsoft Access数据库引擎未将'tblPriceComp.ProductID'识别为有效的字段名或表达式。”以及“Microsoft Access数据库引擎无法将'tblPriceComp.SupplyerID'识别为有效的字段名或表达式。“奇怪。您可以尝试从qryPriceComp中的选择列表中删除交叉表查询中未使用的所有字段,即tblPriceComp.SupplyerID、tblPriceComp.ProductID、tblPriceComp.Effdt
。如果所有其他操作都失败,您可以将qryPriceComp更改为插入到可诱惑的查询中的,然后将交叉表查询建立在诱惑的基础上。问候空间学员,很抱歉我们的回复太晚了,我们被赶出办公室,这样他们就可以锁起来了。正如您所说,更改为插入解决了问题。当需要交叉表时,我创建了一个删除查询来清除tblPriceCompCrosstab中的所有内容,然后运行qryPriceComp&将结果插入tblPriceCompCrosstab,然后运行交叉表以获得结果。其疯狂的冗长和低效,将需要更多的定期紧凑型和维修的后端,但直到我能找到一个更好的更优化的方式,我会做他的。感谢您的帮助:)确切的错误消息是什么?运行交叉表查询时,我会收到“Microsoft Access数据库引擎未将'tblPriceComp.ProductID'识别为有效的字段名或表达式”和“Microsoft Access数据库引擎未将'tblPriceComp.SupplyerID'识别为有效的字段名或表达式”。奇怪。您可以尝试从qryPriceComp中的选择列表中删除交叉表查询中未使用的所有字段,即tblPriceComp.SupplyerID、tblPriceComp.ProductID、tblPriceComp.Effdt
。如果所有其他操作都失败,您可以将qryPriceComp更改为插入到可诱惑的查询中的,然后将交叉表查询建立在诱惑的基础上。问候空间学员,很抱歉我们的回复太晚了,我们被赶出办公室,这样他们就可以锁起来了。正如您所说,更改为插入解决了问题。当需要交叉表时,我创建了一个删除查询来清除tblPriceCompCrosstab中的所有内容,然后运行qryPriceComp&将结果插入tblPriceCompCrosstab,然后运行交叉表以获得结果。其疯狂的冗长和低效,将需要更多的定期紧凑型和维修的后端,但直到我能找到一个更好的更优化的方式,我会做他的。谢谢你的帮助:)
TRANSFORM Sum(qryPriceComp.CostPrice) AS SumOfCostPrice
SELECT qryPriceComp.Product
FROM qryPriceComp
GROUP BY qryPriceComp.Product
ORDER BY qryPriceComp.Product, qryPriceComp.Supplier
PIVOT qryPriceComp.Supplier;