逆透视访问数据 Table

Unpivot Access Data Table

下午好,

我想取消对 Access 的透视 Table。我在 Access 中有将近一百列和一列带有 ID,我想取消透视,将除 de ID 之外的所有列考虑到一个名为“类型”的列中(例如)。

如何从 Access 获取它?不管是通过 SQL 查询还是 VBA.

先谢谢你。

SELECT ... 的方法似乎不适用于 OP,您可以尝试使用“愚蠢”的代码来实现。假设您有表 tblSourcetblTarget,其中 tblTarget 具有字段 IDtypeval,而 ID 是tblSource 中的第一个字段。然后下面的代码将“反透视”数据

Option Compare Database
Option Explicit

Sub stupidUnpivot()

    Dim db As Database
    Set db = CurrentDb
    Dim rsSrc As Recordset
    Set rsSrc = db.OpenRecordset("SELECT * FROM tblSource")
    
    Dim rsTrg As Recordset
    Set rsTrg = db.OpenRecordset("SELECT * FROM tblTarget")
    
    Dim i As Long
    
    rsSrc.MoveFirst
    
    Do
        With rsTrg
            ' every row in tblSoruce regardless of the number of colummns
            ' will be written to tblTarget in the fields ID, type and val
            For i = 1 To rsSrc.Fields.Count - 1
                .AddNew
                .Fields("ID").Value = rsSrc.Fields(0).Value
                .Fields("type").Value = rsSrc.Fields(i).Name
                .Fields("val").Value = rsSrc.Fields(i).Value
                .Update
            Next i
        
        End With
        rsSrc.MoveNext
    Loop Until rsSrc.EOF

End Sub