SQL 在 MS Access 中将行转换为列的查询 table

SQL query to transpose rows to columns in MS Access table

我有以下 MS Access 2010 table(不,F1 F2 是 headers):

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。

不幸的是,Access 没有像 MS SQL 中的 UNPIVOT 那样的 SQL 函数,因此对于转置,您可以使用 UNION SQL,子查询的数量等于源 table 中的列,或者您可以使用这样的 VBA 代码:

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

函数GetRows将整个table加载到二维数组中,然后将该数组卸载到目标table