我有以下作爲保存的查詢「qGetClubPoints」派生從保存的查詢變換的查詢不能識別字段MS-ACCESS
SELECT t1.[season], t1.evIndex, t1.Category, t1.runner,
t1.runnerName, t1.ClubID, t1.ClubPoints, t2.CategoryGroupID
FROM
League AS t1 INNER JOIN
[Categories] AS t2
ON t1.category = t2.category
WHERE
t1.[season]>=2017
AND
t1.[runner] IN
(
SELECT TOP 4 runner FROM [league] as t11
INNER JOIN [Categories] as t12
ON t11.category = t12.category
WHERE t11.evIndex=t1.evIndex
AND t11.clubID=t1.ClubID
AND t12.CategoryGroupID=t2.CategoryGroupID
ORDER BY ClubPoints DESC, runner DESC
)
ORDER BY t1.evIndex, t1.ClubID, t2.CategoryGroupID, t1.ClubPoints DESC
上述查詢產生每俱樂部點根據每個類別的頂部4的結果組每個事件。當我運行上面的查詢時,我得到了預期的結果。 現在我想從上面的結果
TRANSFORM sum(ClubPoints) SELECT ClubID FROM qGetClubPoints GROUP BY ClubID PIVOT evIndex
但是執行透視表,我得到一個錯誤:
Microsoft Access數據庫引擎無法識別「t1.evIndex」作爲有效的字段名或表達
它看起來如在查詢中的內部參數如t11.evIndex=t1.evIndex
當查詢被用作樞軸表源不被認可。
我可以在Access 2016下複製此行爲(可能是優化器的行爲,以前有問題)。然而,從用戶自定義函數中包裝'WHERE'查詢來看,我想不出一個解決方法。如果你對如何做到這一點感興趣,我可以向你展示。 –
我正在通過ASP.NET網站運行查詢,我不確定我能在這裏使用用戶定義的函數 –
不,不幸的是,您不會。另一種方法是將你的'IN'子句移動到'FROM'子句並將其加入,並將'IN'子句中的'WHERE'子句移動到'ON'子句。 (你可能必須去嵌套子查詢才能使用'TOP',並且我不能100%確定它是可能的)。 –