0

在 access 2010 中出现以下错误,

the Microsoft access database engine cannot find the input table or query 'Test'. 
Make sure it exists and that its name is spelled correctly.

跑步时,

SELECT 
      TEST.[CATEGORY CODE] AS CATEGORYCODE
    , TEST.[SAMPLE COMPOSITION] AS SAMPLECOMPOSITION
    , Sum(TEST.[WPI]) AS [SumOfWPI]
    , Sum(TEST.[Mean Freq Year Fav]) AS [SumOfMean Freq Year Fav] 
FROM 
(
    SELECT * 
    FROM DATA1 
    WHERE DATA1.[CATEGORY CODE] IN (
            SELECT DISTINCT CODES.[CATEGORY CODE] 
            FROM CODES
        ) 

    UNION ALL 

    SELECT * 
    FROM DATA2 
    WHERE DATA2.[CATEGORY CODE] IN (
            SELECT DISTINCT CODES.[CATEGORY CODE] 
            FROM CODES
        ) 
) AS TEST 
WHERE TEST.[COUNTRY] = 'UNITED STATES' 
    AND TEST.[SAMPLE COMPOSITION] IN (
        SELECT DISTINCT TEST.[SAMPLE COMPOSITION] 
        FROM TEST
    ) 
    AND TEST.[CATEGORY CODE] IN (
        SELECT DISTINCT CODES.[CATEGORY CODE] 
        FROM CODES
    ) 
GROUP BY TEST.[CATEGORY CODE], TEST.[SAMPLE COMPOSITION] 
ORDER BY TEST.[CATEGORY CODE];

我正在使用 union all 创建第 4 个表 TEST,方法是将 2 个表 Data1 和 Data2 合并,并确保只有记录是从 Codes 表中获取的类别代码。任何想法为什么它给我这个错误?

如果我删除此行,它是由 union all 创建的表的自联接: AND TEST.[SAMPLE COMPOSITION] IN (SELECT DISTINCT TEST.[SAMPLE COMPOSITION] FROM TEST)

我能够运行查询....

另外,现在我已经指定了 COUNTRY = "UNITED STATES"。但是我如何指定 COUNTRY="<>UNITED STATES" 或 COUNTRY= 所有国家,以便我可以获得每个国家的总计?

现在我正在做多个标准自动过滤器来实现这一点,但它需要 1.5 天,因为合并 2 个表后的数据约为 92000 条记录。因此,尝试访问以实现相同的目标。如果有人可以帮助我,那么我可以发送一个包含数据的示例文件。

4

1 回答 1

0

在创建 TEST 之前,您无法引用它,并且您正在创建它作为查询的结果。您将不得不使用 2 个查询来完成此操作,因为您需要 UNION ALL 中的所有结果。

COUNTRY <> "UNITED STATES" 将回答您的第二个问题。

于 2013-06-10T14:14:54.003 回答