我在Access中创建了一个带有子查询的查询,并且无法在Excel 2003中链接它:当我使用菜单Data
→Import External Data
→Import Data...
并选择mdb文件时,查询是不在列表中。如果我使用菜单Data
- >Import External Data
- >New Database Query...
,我可以在列表中看到我的查询,但在导入向导结束时,我得到这个错误:无法链接MS Access查询与子查询
Too few parameters. Expected 2.
我的猜测是,查询语法导致问题,实际上查询包含一个子查询。所以,我会尝试描述查询目标和结果语法。
表位置
- ID(自动编号,主键)
- 位置(双)
- currency_id(长)(引用Currency.ID)
- 图集(长)
表货币
- ID(自动编号,主键)
- 码(文本)
查询目标
- 加入2代表由图集= 1
- 过滤
- 在(“A”,“B”)中通过currency.code筛选
- 组按币种并计算位置的总和为每种货币组的呼叫的结果:sumOfPositions
- 计算ABS各币种组
- (sumOfPositions)计算前一结果的总和作为单个结果
查询
没有最后一笔查询可以使用设计视图中创建。生成的SQL是:
SELECT Currency.code, Sum(Positions.position) AS SumOfposition
FROM [Currency] INNER JOIN Positions ON Currency.ID = Positions.currency_id
WHERE (((Positions.portfolio)=1))
GROUP BY Currency.code
HAVING (((Currency.code) In ("A","B")));
,以计算最终SUM我做了以下(在SQL视图):
SELECT Sum(Abs([temp].[SumOfposition])) AS sumAbs
FROM [SELECT Currency.code, Sum(Positions.position) AS SumOfposition
FROM [Currency] INNER JOIN Positions ON Currency.ID = Positions.currency_id
WHERE (((Positions.portfolio)=1))
GROUP BY Currency.code
HAVING (((Currency.code) In ("A","B")))]. AS temp;
所以,问题是:是否有用于构建一个更好的办法该查询为了使出口工作?
谢谢,这就是我所做的。之后,Access确实添加了垃圾内容。无论如何,这个查询不能导出到excel。 – perissf
我想我必须使用Excel Pivot Table功能,它将内部查询的查询结果放到一个支持最终总和的Pivot中。 – perissf