如何在 MS ACCESS 中转置字段
How to transpose Field in in MS ACCESS
我有一个包含 52 列的 table 现在我需要转置包含日期
的列
输入:
2009 2010 2011 2012
30 50 60 80
输出:
Year Values
2009 30
2010 50
2011 60
2012 80
建议1:将数据复制出来,粘贴到excel,然后复制并选择性粘贴>>转置。然后将其复制回 Access
中的新 table
建议 2:VBA。假设您的 table 有一条包含许多字段的记录,如下所示:
Sub transpose()
Dim rs As Recordset
Dim rsField As Field
Dim db As Database
Dim StrSQL As String
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Table1", dbOpenTable)
'Assuming that there is only 1 record
For Each rsField In rs.Fields
StrSQL = "INSERT INTO Table2 VALUES ('" & rsField.Name & "'," & rsField.Value & ");"
Next rsField
End Sub
Table1
具有包含许多字段的单个记录。 Table2
有两个字段(YEAR
和 VALUE
)
建议 3: 1 真的很糟糕 UNION 查询:
SELECT "2009" as year, [2009] as value FROM Table1
UNION ALL
SELECT "2010" as year, [2010] as value FROM Table1
UNION ALL
SELECT "2011" as year, [2011] as value FROM Table1
UNION ALL
SELECT "2012" as year, [2012] as value FROM Table1
结论:所有这些都很糟糕,但你的数据也很糟糕。 excel 解决方案是非常手动的,excel 可能会破坏您的数据(删除前导 0、转换日期格式,以及其他糟糕的事情)。解决方案 2 意味着您必须编写和维护 VBA... 而解决方案 3 编写起来很痛苦,如果您有其他类似的 table 则不容易重复 table,但是具有您需要逆透视的不同数据。
我有一个包含 52 列的 table 现在我需要转置包含日期
的列输入:
2009 2010 2011 2012
30 50 60 80
输出:
Year Values
2009 30
2010 50
2011 60
2012 80
建议1:将数据复制出来,粘贴到excel,然后复制并选择性粘贴>>转置。然后将其复制回 Access
中的新 table建议 2:VBA。假设您的 table 有一条包含许多字段的记录,如下所示:
Sub transpose()
Dim rs As Recordset
Dim rsField As Field
Dim db As Database
Dim StrSQL As String
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM Table1", dbOpenTable)
'Assuming that there is only 1 record
For Each rsField In rs.Fields
StrSQL = "INSERT INTO Table2 VALUES ('" & rsField.Name & "'," & rsField.Value & ");"
Next rsField
End Sub
Table1
具有包含许多字段的单个记录。 Table2
有两个字段(YEAR
和 VALUE
)
建议 3: 1 真的很糟糕 UNION 查询:
SELECT "2009" as year, [2009] as value FROM Table1
UNION ALL
SELECT "2010" as year, [2010] as value FROM Table1
UNION ALL
SELECT "2011" as year, [2011] as value FROM Table1
UNION ALL
SELECT "2012" as year, [2012] as value FROM Table1
结论:所有这些都很糟糕,但你的数据也很糟糕。 excel 解决方案是非常手动的,excel 可能会破坏您的数据(删除前导 0、转换日期格式,以及其他糟糕的事情)。解决方案 2 意味着您必须编写和维护 VBA... 而解决方案 3 编写起来很痛苦,如果您有其他类似的 table 则不容易重复 table,但是具有您需要逆透视的不同数据。