2017-03-02 76 views
0

我需要枢转基于以下的表:MS ACCSS VBA PIVOT

ID | Level 
10 | 1 
10 | 2 
10 | 2 
10 | 3 
10 | 3 
11 | 3 

出现这样的:

ID | Level1 | Level2 | Level 3 
10 | 1 | 2 | 2 
11 | 0 | 0 | 1 

在SQL SERVER,这是代码:

SELECT ID, [1] AS PL1, [2] AS PL2, [3] AS PL3 
into Table2 
FROM 
(SELECT ID, [Level] 
FROM Table1) ps 
PIVOT 
(
COUNT ([Level]) 
FOR [Level] IN 
([1], [2], [3]) 
) AS pvt 

在MS ACCESS/VBA我这样做,但得到一个错误“运行时错误3000保留错误(-3002);这个错误没有消息”

mysql2 = "Transform Count([Table1].[Level]) " _ 
     & " select [Table1].[ID], [Table1].[Level] " _ 
     & " INTO [Tabel2] " _ 
     & " FROM [Table1]" _ 
     & " Group By [Table1].[ID] " _ 
     & " PIVOT [Table1].[Level] " 
dbs.Execute mysql2 

回答

0

好的,设法把它弄好。分享以防万一有人需要它。

问题是TRANSFORM只能在SELECT上工作,不应该将INTO作为整个查询的一部分。

分辨率:

首先,将该SELECT语句保存为WITHOUT INTO查询。

Transform Count([Table1].[Level]) 
select [Table1].[ID], [Table1].[Level] 
FROM [Table1] 
Group By [Table1].[ID] 
PIVOT [Table1].[Level] 

在VBA脚本,做一个表,可以使用查询:

mysql2 = "select * into Pivot_Table" _ 
     & " from QueryName " 
    dbs.Execute mysql2