我有以下MS Access 2010表(不,F1 F2是标题):
No F1 F2
1 a1 b1
2 a1 b2
3 a3 b3
4 a4 b4
5 a5 b5
6 a6 b6
我需要一个SQL查询来执行转置列到行操作,以获得以下输出:
1 2 3 4 5 6
a1 a2 a3 a4 a5 a6
b1 b2 b3 b4 b5 b6
谢谢你, M.R.
答案 0 :(得分:0)
不幸的是,Access在MS SQL中没有像TraceAppender
这样的SQL函数,所以对于转置,您可以使用UNION SQL,其中子查询的数量与源表中的列数相同,或者您可以使用类似VBA的代码这样:
UNPIVOT
函数Dim f As Variant
Dim i As Long
Dim j As Long
With CurrentDb.OpenRecordset("SELECT * FROM TableSrc")
.MoveLast
.MoveFirst
f = .GetRows(.RecordCount)
End With
With CurrentDb.OpenRecordset("SELECT * FROM TableDest")
For i = 0 To UBound(f)
.AddNew
For j = 0 To UBound(f, 2)
.Fields(j) = f(i, j)
Next j
.Update
Next i
End With
将整个表加载到二维数组中,然后将该数组卸载到目标表