将转换应用于复杂子查询时,MS-ACCESS 无法识别字段

MS-ACCESS is not recognizing a field when applying a Transform to a complex subquery

对不起,我的英语不是很好,所以我请求你的理解。

1st,我不得不说我不太擅长使用 Access:)。我在工作中使用它来自动化一些报告,它真的很有用……从那时起!!几个月以来我一直坚持让这件作品发挥作用,我必须让它发挥作用。

我有一个包含一些 table 的数据库,我想以精确的方式提取和排序外贸 table,以便在季度报告中使用它。我已经完成了大部分 table,但仍然难以实施。

我必须制作一个 Table 显示上季度的 5 个季度变化和当前季度的年度变化,对于出口/进口商品,按商品分类。

所以一开始我试着提出一个请求,给出每年和每个季度,每个产品的季度变化。 sql 代码如下所示:

SELECT Courant.anm, 
       Courant.ctci4, 
       Courant.maxa, 
       Sum(Iif(( ( Courant.valeur - Ancien.valeura ) / Ancien.valeura ) * 100 IS 
               NULL, 
           0, ( 
               ( Courant.valeur - Ancien.valeura ) / Ancien.valeura ) * 100)) AS 
       VTR 
FROM   (SELECT B.annee, 
               B.mois, 
               B.annee & B.mois                                     AS ANM, 
               (SELECT Max(base1.annee & base1.mois) 
                FROM   base1 
                WHERE  base1.annee & base1.mois < B.annee & B.mois) AS MaxA, 
               B.ctci4, 
               Sum(B.valstat)                                       AS Valeur 
        FROM   base1 B 
        WHERE  ( Len(B.ctci4) ) = 1 
               AND ( B.flux = "e" 
                      OR B.flux = "r" ) 
        GROUP  BY B.annee, 
                  B.mois, 
                  B.ctci4) AS Courant 
       INNER JOIN (SELECT base1.annee & base1.mois AS ANM, 
                          base1.ctci4, 
                          Sum(base1.valstat)       AS ValeurA 
                   FROM   base1 
                   WHERE  ( Len(base1.ctci4) ) = 1 
                          AND ( base1.flux = "e" 
                                 OR base1.flux = "r" ) 
                   GROUP  BY base1.annee & base1.mois, 
                             base1.ctci4) AS Ancien 
               ON ( Courant.ctci4 = Ancien.ctci4 ) 
                  AND ( Courant.maxa = Ancien.anm ) 
GROUP  BY Courant.anm, 
          Courant.ctci4, 
          Courant.maxa 

请求的那部分工作正常。事实上,我给了我一个连接 ID (Courant.ANM),我创建它是为了在内部加入相同 table 的另一个副本,以便能够在同一条记录上显示当前值和值上一季度,产品代码,上一期的ID(连接年份和季度)和显示与上一期变化百分比的字段VTR。

为了完成,我必须使用 TRANSFORM 制作一个枢轴 table。我必须将年和季度 (ANM) 放在列中,将产品代码 (CTCI4) 放在行中,然后将值放在列中,但是当我尝试时,MS ACCESS 说 B.annee 未被识别为有效的字段名称。即使我用不同的方式命名那个字段我也不起作用!!请问有人能告诉我怎么做吗?

这是带有您提到的字段的 Access 数据透视表的代码(我使用了一个假的 table 名称 - 测试):

TRANSFORM Count(test.CTCI4) AS CountOfCTCI4
SELECT test.CTCI4
FROM test
GROUP BY test.CTCI4
PIVOT test.ANM;

你得到的关于 B.annee 的错误在我看来好像是在数据到达 Transform/Pivot 之前发生的。尝试将您的查询分成几部分并测试它们 - 首先是子查询。