我有以下作为保存的查询“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%确定它是可能的)。 –