如何在 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 有两个字段(YEARVALUE

建议 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,但是具有您需要逆透视的不同数据。