2013-10-25 52 views
1

我需要在MS Access數據庫中將數據從一個模式轉換爲另一個模式。這涉及編寫查詢以從舊模式中選擇數據,然後將查詢結果插入到新模式中的表中。下面是我想要做的一個例子。下面的SELECT組件工作正常,但INSERT組件不起作用。有人可以告訴我如何解決下面的問題,以便將SELECT語句的結果有效地插入到目標表中?在ms access中插入查詢結果到2010

INSERT INTO CompaniesTable 
    (CompanyName) 
    VALUES 
    (
     SELECT DISTINCT 
      IIF(a.FIRM_NAME IS NULL, b.SUBACCOUNT_COMPANY_NAME, a.FIRM_NAME) AS CompanyName 
     FROM 
      (SELECT ContactID, FIRM_NAME, SUBACCOUNT_COMPANY_NAME FROM qrySummaryData) AS a 
      LEFT JOIN 
      (SELECT ContactID, FIRM_NAME, SUBACCOUNT_COMPANY_NAME FROM qrySummaryData) AS b 
      ON a.ContactID = b.ContactID 
    ); 

目標表(CompaniesTable)的定義是:

CompanyID  Autonumber 
CompanyName Text 
Description Text 
WebSite  Text 
Email   Text 
TypeNumber  Number 

回答

4

也許你有一個錯字,但加入一個表本身你不需要加入,這應該能正常運行。在select語句中插入一個不使用values關鍵字的插入。

INSERT INTO CompaniesTable (CompanyName,Description,Website,Email,TypeNumber) 
    SELECT DISTINCT IIF(FIRM_NAME IS NULL, SUBACCOUNT_COMPANY_NAME, FIRM_NAME), 
        '','','',0 
    FROM qrySummaryData 
+0

謝謝。我試過了,它給了我以前嘗試過的其他東西的類似結果。它將數據完美地輸出到查詢數據表視圖中,但是然後CompaniesTable仍然是空的。我需要將結果插入到CompaniesTable中。 – CodeMed

+0

@CodeMed - 這個說法是正確的,CompaniesTable有更多的列 - 也許是非空的? – Hogan

+0

是的,CompaniesTable有六個字段,其中一個是自動編號密鑰。在查詢運行之前,整個表格都是空的。我在使用這個查詢來測試之前寫/運行更復雜的事情。 – CodeMed