你所尋求的解決方案的一般形式的一些方法是使用UNION查詢,像這樣:
SELECT [country], [product], [id],
[1qtr 2010 flash] AS [Value],
2010 AS [Year],
1 AS [Qtr],
"flash" AS [Type]
FROM ImportedTable
UNION ALL
SELECT [country], [product], [id],
[2qtr 2010 flash] AS [Value],
2010 AS [Year],
2 AS [Qtr],
"flash" AS [Type]
FROM ImportedTable
UNION ALL
SELECT [country], [product], [id],
[3qtr 2010 flash] AS [Value],
2010 AS [Year],
3 AS [Qtr],
"flash" AS [Type]
FROM ImportedTable
...
你可以保存這樣的查詢與像[ReformatDataFromExcel]這樣的名稱,那麼當您導入具有新列的更新Excel饋送時,您可以根據需要通過複製和粘貼新的UNION ALL子句來更新查詢。
- 編輯 -
或者,如果你想建立通過代碼然後一些VBA這樣的SQL查詢字符串...
Sub BuildQueries()
Dim cdb As DAO.Database, fld As DAO.Field, sSQL As String
Dim sYear As String, sQtr As String, sType As String, a() As String
Set cdb = CurrentDb
For Each fld In cdb.TableDefs("ImportedTable").Fields
Select Case fld.Name
Case "country", "product", "id"
' do nothing
Case Else
a = Split(fld.Name, " ", -1, vbBinaryCompare)
sQtr = Left(a(0), 1)
sYear = a(1)
sType = a(2)
sSQL = _
"SELECT [country], [product], [id], " & _
"[" & fld.Name & "] AS [Value], " & _
sYear & " AS [Year], " & _
sQtr & " AS [Qtr], " & _
"""" & sType & """ AS [Type] " & _
"FROM ImportedTable"
Debug.Print sSQL ' or whatever you want to do with the query
End Select
Next
Set fld = Nothing
Set cdb = Nothing
End Sub
...可以建立SQL字符串像這個:
SELECT [country], [product], [id], [1qtr 2010 flash] AS [Value], 2010 AS [Year], 1 AS [Qtr], "flash" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [2qtr 2010 flash] AS [Value], 2010 AS [Year], 2 AS [Qtr], "flash" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [3qtr 2010 flash] AS [Value], 2010 AS [Year], 3 AS [Qtr], "flash" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [4qtr 2010 flash] AS [Value], 2010 AS [Year], 4 AS [Qtr], "flash" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [1qtr 2011 budget] AS [Value], 2011 AS [Year], 1 AS [Qtr], "budget" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [2qtr 2011 budget] AS [Value], 2011 AS [Year], 2 AS [Qtr], "budget" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [3qtr 2011 budget] AS [Value], 2011 AS [Year], 3 AS [Qtr], "budget" AS [Type] FROM ImportedTable
SELECT [country], [product], [id], [4qtr 2011 budget] AS [Value], 2011 AS [Year], 4 AS [Qtr], "budget" AS [Type] FROM ImportedTable
請解釋你的數據是如何拆分成行和列的。也許你所顯示的所有數據都在一個單元中,但是我們無法從你的描述中看出來。 –
確定一行可能是...美國,筆記本電腦,o-123,100 $,200 $,300 $ ....等 – SAM244776
因爲你可以看到它的國家,產品,身份證,那麼基於季度的價值的年份和類型的價值,如預算或閃存.. – SAM244776