2015-11-04 104 views
1

任何人都可以幫助我解決使用CrossTab查詢來比較來自供應商的當前價格的問題嗎? 它從工作SELECT查詢中有一個子查詢,對我們的價格比較,選擇只在最反感的價格,這完全適用於我們需要的數據,見下圖:使用子查詢查詢來自查詢的交叉表查詢

qryPriceComp:

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))); 

這則用於交叉表查詢 qryPriceComp_Crosstab:

TRANSFORM Sum(qryPriceComp.CostPrice) AS SumOfCostPrice 
SELECT qryPriceComp.Product 
FROM qryPriceComp 
GROUP BY qryPriceComp.Product 
ORDER BY qryPriceComp.Product, qryPriceComp.Supplier 
PIVOT qryPriceComp.Supplier; 

但運行時,它提供一個錯誤,這兩個tblPriceComp.ProductID和tblSupplier.SupplierID無效。我曾嘗試將它們添加爲周界,但運行時會給出一個框以輸入ID號,這是不好的,因爲我們想要查看所有的productID和SupplyEID。如果有人能幫助它,將不勝感激!

+0

什麼是* exact *錯誤信息? – Andre

+0

當交叉表查詢運行時,我得到 「Microsoft Access數據庫工程不能將'tblPriceComp.ProductID'識別爲有效的字段名稱或表達式。」 和 「Microsoft Access數據庫工具不能將'tblPriceComp.SupplyerID'識別爲有效的字段名稱或表達式。」 –

+0

奇數。您可以嘗試從qryPriceComp的SELECT列表中刪除交叉表查詢中未使用的所有字段,即'tblPriceComp.SupplyerID,tblPriceComp.ProductID,tblPriceComp.Effdt'。 – Andre

回答

0

不是一個真正的解決方案,但可使用的替代方法:

變化qryPriceCompINSERT INTO tempTable查詢,然後立足於tempTable交叉表查詢。

在每次INSERT運行之前,必須執行DELETE * FROM tempTable