用于将行转置到MS Access表中的列的SQL查询

时间:2016-12-12 21:57:24

标签: ms-access access-vba ms-access-2010

我有以下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.

1 个答案:

答案 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 将整个表加载到二维数组中,然后将该数组卸载到目标表