逆透视访问数据 Table
Unpivot Access Data Table
下午好,
我想取消对 Access 的透视 Table。我在 Access 中有将近一百列和一列带有 ID,我想取消透视,将除 de ID 之外的所有列考虑到一个名为“类型”的列中(例如)。
如何从 Access 获取它?不管是通过 SQL 查询还是 VBA.
先谢谢你。
SELECT ...
的方法似乎不适用于 OP,您可以尝试使用“愚蠢”的代码来实现。假设您有表 tblSource
和 tblTarget
,其中 tblTarget
具有字段 ID
、type
和 val
,而 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
下午好,
我想取消对 Access 的透视 Table。我在 Access 中有将近一百列和一列带有 ID,我想取消透视,将除 de ID 之外的所有列考虑到一个名为“类型”的列中(例如)。
如何从 Access 获取它?不管是通过 SQL 查询还是 VBA.
先谢谢你。
SELECT ...
的方法似乎不适用于 OP,您可以尝试使用“愚蠢”的代码来实现。假设您有表 tblSource
和 tblTarget
,其中 tblTarget
具有字段 ID
、type
和 val
,而 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