将 MS Access 2007 表中的数据重新排列为新的表格式/结果输出

Jua*_*lez 3 ms-access-2007 vba

我有具有以下格式的 Access 表:

--------------------------------------
|Name |Math|Science|Reading|Civics|
--------------------------------------
|Mike | A  |  C    |  A    | B    |
|John | B  |  A    |  A    | B    |
|Randy| A  |  C    |  A    | A    |
|Sasha| B  |  C    |  D    | A    |
|Max  | A  |  C    |  A    | A    |
|Jenn | A  |  A    |  A    | C    |
-----------------------------------
Run Code Online (Sandbox Code Playgroud)

是否有任何我可以使用的 Access Sql 代码或 Access VBA 脚本,以便我可以按以下格式转换(或在查询/结果集中输出)上表?

 --------------------
|   Name      |Grade|
---------------------
|Mike Math    | A   |
|Mike Science | c   | 
|Mike Reading | A   |
|Mike Civics  | B   |
|John Math    | B   |
|John Science | A   | 
|John Reading | A   |
|John Civics  | B   |
|Randy Math   | A   |
 etc... 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的是以下 2 个线程,它们显示了如何在 Access 中使用 VBA 将所有字段名称引入数组或仅引入基本输出。这是我想要完成的工作的开始(因为本质上我需要将字段名称引入第一列)。如果我能弄清楚,我会回帖。

/sf/ask/808408821/

http://forums.asp.net/t/1143922.aspx

我想知道我是否可以做类似的事情...

For each fieldname in table (where fieldname != Name)
Begin 
select 
Name + ' ' + Subject as Name, 
(select Grade from table where Name = Name and Subject = Subject) as Grade
End
Run Code Online (Sandbox Code Playgroud)

cha*_*cha 6

是的,可以使用UNION ALL

SELECT [Name] & " Math" AS col1, tab1.Math FROM tab1
UNION ALL
SELECT [Name] & " Science" AS col1, tab1.Science FROM tab1
UNION ALL
SELECT [Name] & " Reading" AS col1, tab1.Reading FROM tab1
UNION ALL
SELECT [Name] & " Civics" AS col1, tab1.Civics FROM tab1
Order BY 1;
Run Code Online (Sandbox Code Playgroud)

结果