【问题标题】:ACCESS 2010 SQL-- using WHERE IN on SELECT TOP subquery fieldACCESS 2010 SQL——在 SELECT TOP 子查询字段上使用 WHERE IN
【发布时间】:2013-12-13 09:01:46
【问题描述】:

我希望这个查询告诉我 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 说它正在“运行查询”并且永远不会完成。数据的大小不是问题。

这是我找到的最接近的例子,但它并没有真正说明答案:MS Access - WHERE IN works, but WHERE NOT IN fails

【问题讨论】:

    标签: sql select subquery ms-access-2010 where-clause


    【解决方案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
    

    【讨论】:

    • 嗨,巴里,非常感谢新表格。当我尝试在 Access 中运行它时,我得到“FROM 子句中的语法错误”,我似乎无法修复它
    • 是的,对不起。我忘记了 Access 不能像 SQL Server 那样容忍那么多的缩写。现在应该修好了。
    • @JRob 需要多长时间?
    • 大约需要 1 秒
    • @JRob 酷!感谢您告知我们。
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2014-07-22
    相关资源
    最近更新 更多