请原谅我的英语不是很好,所以我求你理解。
第一,我不得不说我不是很好用Access :)。我在工作中使用它来自动化一些报告,它真的很有用......从那时起!我坚持让这个工作好几个月,我必须让它工作。
我有一个包含一些表的数据库,我想以精确的方式提取和排序外贸表,以便在季度报告中使用它。我已经完成了大部分表格,但仍然很难实现。
我必须制作一张表格,显示出口/进口商品按商品分类的最后五个季度的变化和当前季度的年度变化。
所以起初我试图提出一个请求,给出每年和每季度产品的四分之一变化。 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),我已经创建了内部连接同一个表的另一个副本,以便能够在同一记录上显示当前值和上一季度的值,产品代码,上一期间的ID(连接年份和季度)以及以百分比显示上一期间变化的字段VTR。
要完成,我必须使用TRANSFORM制作数据透视表。我必须把年和年列中的四分之一(ANM),行中的产品代码(CTCI4)和值,但是当我尝试时,MS ACCESS表示B.annee不被识别为有效的字段名称。即使我以不同的名字命名我也不行!请有人告诉我该怎么做?
答案 0 :(得分:0)
这是Access枢轴的代码,其中包含您提到的字段(我使用了假表名 - 测试):
TRANSFORM Count(test.CTCI4) AS CountOfCTCI4
SELECT test.CTCI4
FROM test
GROUP BY test.CTCI4
PIVOT test.ANM;
关于B.annee的错误在我看来似乎是在数据进入Transform / Pivot之前发生的。尝试将查询分成几部分并对其进行测试 - 首先是子查询。