テーブルにいくつかのデータがあります。2 番目の表にまとめたデータの一部と、3 番目の表にまとめたデータがあります。
それらをUNION ALL CORRESPONDINGし、WHEREコマンドを使用してメインテーブルから冗長行を除外したい
私の問題は、要約されたテーブルのデータの一部がメイン テーブルに対して冗長であるため、3 つのテーブルの列番号が一致していないことです。明らかに、JOIN を使用して、一緒に使用したときにすべてのテーブルが同じ列になるようにしたいと考えています。
私の問題は、結合をユニオンに入れる方法、またはユニオンを結合する方法、または2つを何らかの方法でメッシュ化する方法に頭を悩ませることができないことです。
2 つのサマリー テーブルの列名は、メイン テーブルの列名のサブセットです。まだ結合が必要ですか?
これまでに行ったことは次のとおりです(ほとんどが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 ではまだ新しい)、Time Report からデータを取得し、MS Access が ResID の一致を認識できるようにサマリー テーブルを結合します。次に、提供されたフィールドの新しいテーブルを作成し、それらが対応する場所で、QRY7
destination <> baselocation (Overheads で要約) および Cust_Id <> 2 (base から word で要約) を含むデータを確認します。
今、それが言っているのは、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%
一部のエントリは空白/null です。
メモリからの 2 つのサマリー テーブルには、ResID、ProjectID、およびパーセンテージが含まれています。Work From Base テーブルには、これに加えて Customer-Id が含まれています。Bob の上位 2 つのエントリは、2 つのサマリー テーブルから取得する必要があります。3 番目のエントリは、削除しないエントリの例です。4 番目のエントリは、ベースロケーションと同じ宛先であるため、結果のテーブルから削除されます (私は一部の行が除外されることを指摘できるように追加しました)
列の数を一致させるには JOIN する必要があり (そうですか?)、行をつなぎ合わせるには UNION を使用する必要があります (そうですか?)。それらを組み合わせるにはどうすればよいですか?