データを含む約20のExcelファイルがあります。すべてのテーブルには、ID、名前、年齢、場所などの同じ列があります。各ファイルには個別のデータがありますが、あるファイルのデータが別のファイルで再び繰り返されるかどうかはわかりません。したがって、すべてのファイルを結合したいので、結果 st には個別の値が含まれている必要があります。できるだけ早くこの問題を解決してください。結果セットを Access データベースに保存したい。
5 に答える
アクセスでシートをリンクするか、シートを表としてインポートすることをお勧めします。
そこから、テーブル/シートからの DISTINCT 選択を使用して必要なキーを決定し、必要に応じてレコードのみを選択してください。
SQL では、JOIN または NATURAL JOIN を使用してテーブルを結合できます。すべてのテーブルが同じ値を持っていると言ったので、私は NATURAL JOIN を調べます。
その後、DISTINCT を使用して個別の値を取得できます。
ただし、これがあなたが探しているものかどうかはわかりません。質問はExcelについて尋ねていますが、SQLでタグ付けしています。
結合は、対応する列の値を一致させることによって 2 つのテーブルを結合することです。その結果、最初のテーブルと、2 番目のテーブルからコピーされた一致した行で構成されるマージされたテーブルが得られます。Excel用のDIGBDアドインを使用できます
必要なデータの一意のセットは次のようです。
SELECT T1.name, T1.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db1.xls;
].[Sheet1$] AS T1
UNION
SELECT T1.name, T1.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db2.xls;
].[Sheet1$] AS T1
id
...しかし、 (Excel テーブルの id 値を使用するのではなく)一連の整数を任意に適用したい場合。
Access データベース エンジンは一般的なテーブル式をサポートしておらず、Excel はVIEW
s をサポートしていないため、そのUNION
クエリを派生テーブルとして繰り返す必要があります (オプティマイザーが繰り返しを認識してくれることを願っています)。たとえば、相関サブクエリを使用して行番号を取得します。
SELECT (
SELECT COUNT(*) + 1
FROM (
SELECT T1.name, T1.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db1.xls;
].[Sheet1$] AS T1
UNION
SELECT T1.name, T1.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db2.xls;
].[Sheet1$] AS T1
) AS DT1
WHERE DT1.name < DT2.name
) AS id,
DT2.name, DT2.loc
FROM (
SELECT T2.name, T2.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db1.xls;
].[Sheet1$] AS T2
UNION
SELECT T2.name, T2.loc
FROM [Excel 8.0;HDR=YES;IMEX=1;DATABASE=C:\db2.xls;
].[Sheet1$] AS T2
) AS DT2;
ノート:
結果セットをアクセスデータベースに保存したい
次に、Excel データを Access データベースのステージング テーブルに移行し、そこからデータ スクラビングを行う必要があります。少なくとも、その派生テーブルをVIEW
:)に入れることができます