小编典典

在SELECT TOP子查询字段上使用WHERE IN的ACCESS 2010 SQL

sql

我想通过这个查询告诉我,2013年支出最大的10家公司在2012年的支出!

SELECT [Company], 
       Sum([SPENDING])
FROM   [Data]
WHERE  [Company] IN (
                     SELECT TOP 10 [Company]
                     FROM          [Data]
                     WHERE         [Year] IN ("2013")
                     GROUP BY      Company
                     ORDER BY      Sum([SPENDING]) DESC
                     )
       AND [Year] IN ("2012")
GROUP BY Company
;

当我尝试运行它时,没有任何错误,但是Access表示它是“正在运行的查询”,并且永远不会完成。数据的大小不是问题。


阅读 337

收藏
2021-03-08

共1个答案

小编典典

我怀疑这只是Access优化器的局限性。像这样尝试:

SELECT d.[Company], 
       Sum(d.[SPENDING])
FROM   [Data] As d
INNER JOIN    (
                     SELECT TOP 10 [Company]
                     FROM          [Data]
                     WHERE         [Year] IN ("2013")
                     GROUP BY      Company
                     ORDER BY      Sum([SPENDING]) DESC
              ) As t  ON  t.Company = d.Company
WHERE d.[Year] IN ("2012")
GROUP BY d.Company
2021-03-08