2013-11-26 17 views
0

我正在將sql導入到Access數據庫中,並且正在將數據解析到正確的表和字段中。我遇到了一個問題,因爲我進口創造列名和輸入值到列,但數據庫使用的列名行值和值在單獨的列將列名轉換爲Access中的行字段

當前表

SC | DO | temp | pH | etc 

val|val | val |val | val 

表我試圖解析爲

Characteristic_Name | Result_Value 

SC     | val 
DO     | val 
temp    | val 
pH     | val 
etc.    | val 

我曾經做過一個聯合查詢得到的結果列很好地填充,但我不能讓列名解析 有沒有辦法做到這一點?

+0

嘗試使用[UNPIVOT](http://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx)。 – user2989408

+1

@ user2989408 MS Access沒有UNPIVOT功能 – Taryn

+0

@bluefeet那麼它應該按照您的答案中所示完成。 – user2989408

回答

3

由於您使用的MS Access,沒有UNPIVOT功能,使您可以使用UNION ALL查詢:

select 'SC' as Characteristic_Name, SC as Val 
from yourtable 
union all 
select 'DO' as Characteristic_Name, DO as Val 
from yourtable 
union all 
select 'temp' as Characteristic_Name, temp as Val 
from yourtable 
union all 
select 'pH' as Characteristic_Name, pH as Val 
from yourtable 
union all 
select 'etc' as Characteristic_Name, etc as Val 
from yourtable; 

作爲一個方面說明,當你正在做一個UNION ALL或UNPIVOT,數據類型必須是一樣的,所以你可能需要轉換val列中的數據,所以它是一樣的。

+0

你真令人驚歎!它的作品非常漂亮!謝謝 – pja

0

您可以創建類似這一個VBA函數:

Set db = CurrentDb() 
Set rs1 = db.OpenRecordset("CurrentTable") 
Dim fld As DAO.Field 
Dim SQL as string 
For Each fld In rs1.Fields 
    SQL = SQL & fld.Name & "," 
Next 
... 

有了這個,你可以提取字段名並添加撰寫的插入數據的SQL字符串您的標準化表格所需的代碼。

0

如果您希望直接避免使用SQL代碼,您可以使用Access Query編輯器執行上述操作。

按下設計工具欄上的「查詢設計」按鈕後,選擇表格中的所有字段。

卸下字段SC,DO,溫度,pH值等

在查詢編輯器選項卡上,添加新的字段:

  • Characteristic_Name: 「SC」
  • Characteristic_Value:SC

並在設計工具欄上按下make table按鈕,選擇一個新的表名,然後運行查詢來創建該表。

然後再次打開相同的查詢,並做以下字段編輯:

  • Characteristic_Name: 「DO」
  • Characteristic_Value:DO

,並按設計工具欄上的附加表按鈕。

選擇與上面相同的新表名並運行查詢。

檢查您有兩倍的行數。

再次重複進行編輯:

  • Characteristic_Name: 「TEMP」
  • Characteristic_Value:臨時

在最後檢查你乘以行數您希望刪除的列數。

雖然沒有上述任何人可以使用他們自己的問題,特別是那些擔心代碼錯誤的人。