我在表格中有一些数据。我在第二个表中总结了一些数据,在第三个表中总结了一些更多的数据。
我希望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将行拼接在一起(对吗?)。我如何组合它们?
答案 0 :(得分:0)
使用具有唯一值的追加查询是否有意义?从两个汇总表开始,最后附加第一个表?
append语句允许您选择哪些列与哪些列匹配,而唯一值将阻止您复制数据。
或者,您可以附加到一个新表中,在该表中,您要在要保持唯一的字段中设置主键?