将转换应用于复杂子查询时,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 之前发生的。尝试将您的查询分成几部分并测试它们 - 首先是子查询。
对不起,我的英语不是很好,所以我请求你的理解。
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 之前发生的。尝试将您的查询分成几部分并测试它们 - 首先是子查询。