2017-03-02 52 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