在MS Access中附加汇总数据

时间:2012-08-09 16:44:43

标签: sql ms-access union inner-join

我在表格中有一些数据。我在第二个表中总结了一些数据,在第三个表中总结了一些更多的数据。

我希望UNION ALL CORESPONDING它们然后使用WHERE命令从主表中排除冗余行

我的问题是我的三个表有不匹配的列号,因为汇总表中的某些数据对主表是多余的。显然,我想使用JOIN,以便所有表一起使用时最终会使用相同的列。

我的问题是我无法解决如何将联接放入联合,或联接中的联合或将两者联系起来的方法,如果是这样的话,如何

两个摘要表的列名是主表中列名的子集 ....我还需要加入吗?

以下是我到目前为止所做的事情(主要由MS Access自动生成,我加入了一些内容):

SELECT 
[QRY7 time report Query].ResID, 
First([QRY7 time report Query].[ResID(T)]) AS [Name], 
[QRY7 time report Query].Baselocation, 
[QRY7 time report Query].Destination,
[QRY7 time report Query].Project, 
[QRY7 time report Query].[Cust_id(T)],
[QRY7 time report Query].[Hrs P1], 
[QRY7 time report Query].[Hrs P2],
[QRY7 time report Query].[Hrs P3], 
[QRY7 time report Query].[Hrs P4], 
[QRY7 time report Query].[Hrs P5], 
[QRY7 time report Query].[Hrs P6]

FROM 
[Qry8a Overhead Summary] 
INNER JOIN 
([Qry8b Work From Base Summary] 
INNER JOIN 
[QRY7 time report Query] 
ON 
[Qry8b Work From Base Summary].ResID = [QRY7 time report Query].ResID
ON[Qry8a Overhead Summary].ResID = [QRY7 time report Query].ResID 

UNION CORRESPONDING
(ResID,[ResID(T)],Baselocation,[Hrs P1],[Hrs P2],[Hrs P3],[Hrs P4],[Hrs P5],[Hrs P6])

SELECT  
[Qry8a Overhead Summary].[ResID(T)],
[Qry8a Overhead Summary].Baselocation,
[Qry8a Overhead Summary].[Hrs P1],
[Qry8a Overhead Summary].[Hrs P2],
[Qry8a Overhead Summary].[Hrs P3],
[Qry8a Overhead Summary].[Hrs P4],
[Qry8a Overhead Summary].[Hrs P5],
[Qry8a Overhead Summary].[Hrs P6]
FROM 
[Qry8a Overhead Summary] 

UNION CORRESPONDING
(ResID,[ResID(T)],Baselocation,[Hrs P1],[Hrs P2],[Hrs P3],[Hrs P4],[Hrs P5],[Hrs P6])

SELECT  
[Qry8b Work From Base Summary] .[ResID(T)],
[Qry8b Work From Base Summary] .Baselocation,
[Qry8b Work From Base Summary].[Hrs P1],
[Qry8b Work From Base Summary].[Hrs P2],
[Qry8b Work From Base Summary].[Hrs P3],
[Qry8b Work From Base Summary].[Hrs P4],
[Qry8b Work From Base Summary].[Hrs P5],
[Qry8b Work From Base Summary].[Hrs P6]
FROM 
[Qry8b Work From Base Summary]
GROUP BY 
[QRY7 time report Query].ResID,
[QRY7 time report Query].Baselocation, 
[QRY7 time report Query].Destination, 
[QRY7 time report Query].Project, 
[QRY7 time report Query].[Cust_id(T)], 
[QRY7 time report Query].[Hrs P1],
[QRY7 time report Query].[Hrs P2], 
[QRY7 time report Query].[Hrs P3],
[QRY7 time report Query].[Hrs P4], 
[QRY7 time report Query].[Hrs P5],
[QRY7 time report Query].[Hrs P6], 
[QRY7 time report Query].Cust_id

HAVING 
((([QRY7 time report Query].Destination)<>"D-" &[QRY7 time report Query].[Baselocation]) 
AND 
(([QRY7 time report Query].Cust_id)<>2))

ORDER BY [QRY7 time report Query].ResID;

据我所知(在SQL中仍然是新的)这就是说,从时间报告中提取数据,并加入汇总表,以便MS Access知道ResID匹配。然后,创建一个新的字段表,提供它们对应的字段,确保来自QRY7数据HAVING destination&lt;&gt;的任何内容。 baselocation(在开销中汇总)和Cust_Id&lt;&gt; 2(从基础中总结)。

现在它说的是我的From语法错了,但我不知道这是什么。我甚至不知道我是否正在做这一切

编辑:

以下是“主要”表格中的一些数据样本:

ResID      Nm    Base     Proj      Destination Cust_id     P1     P2     P3
MJW     Mary  LONDON   Project1              Overhead           
                       Project2  A-LONDON    Overhead                  0.39%
                       Project3  UK          Overhead   1.24%       
                       Project12 B-LONDON    232        19.47% 60.02%  0.82%
                       Project13             232        12.44%      
                       Project16 A-LONDON    56                3.5%    
                       Project17 B-LONDON    56                        9.8%

头顶总结:

ResID Nm     Base    Cust_id    P1    P2     P3
MJW   Mary   LONDON  Overhead   4.61% 2.31%  3.13%

工作表格基本摘要

ResID Nm     Base    Cust_id    P1    P2     P3
MJW   Mary   LONDON  232        0.43% 5.51%  0.09%
MJW   Mary   LONDON  562        0.43% 5.51%  0.09%

这是他们合并在一起

R_Id Nm      Base    Dest        Proj      Cust_id       P1      P2     P3
MJW Mary    LONDON  UK          Overhead  SumOver       1%      7.4%   4.8% 
                     A-London    Project1  SumBaseCust1  1.68%   0%     24.93%
                     B-London    Project2  SumBaseCust1  2.48%   0%     4.3%
                                 Project13 232           10 %           0
                     B-LONDON    Project16 56            3.5%    
                     B-LONDON    Project17 56                    9.8%

有些条目为空/空。

从内存中,两个摘要表包含ResID,ProjectID和百分比,Work From Base表中包含Customer-Id。 Bob的前两个条目应该来自两个汇总表,第三个条目是不应该被删除的示例条目,第四个条目具有与基本位置相同的目的地所以将从结果表中删除(我添加了它,所以我可以指出某些行将被遗漏)

我必须JOIN才能使列数匹配(右?),UNION将行拼接在一起(对吗?)。我如何组合它们?

1 个答案:

答案 0 :(得分:0)

使用具有唯一值的追加查询是否有意义?从两个汇总表开始,最后附加第一个表?

append语句允许您选择哪些列与哪些列匹配,而唯一值将阻止您复制数据。

或者,您可以附加到一个新表中,在该表中,您要在要保持唯一的字段中设置主键?