繁体   English   中英

如何在MS ACCESS中转置字段

[英]How to transpose Field in in MS ACCESS

我有一个包含52列的表格,现在我需要转置包含Date的列

输入:

2009 2010 2011 2012

30    50  60   80

输出:

Year         Values

2009         30

2010         50

2011         60

2012         80

建议1 :复制数据,将其粘贴在excel中,然后复制并粘贴“特殊” >>“转置”。 然后将其复制回Access中的新表中

建议2 :VBA。 假设您的表只有一条记录,其中包含许多许多字段,则如下所示:

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编写起来很麻烦,并且如果您有其他类似的表,但是又需要取消数据透视,则很难重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM