MS ACCSS VBA PIVOT

时间:2017-03-02 07:28:34

标签: sql-server excel vba excel-vba

我需要根据以下内容调整表格:

nlp

看起来像这样:

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

在SQL SERVER中,这是代码:

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

在MS ACCESS / VBA中我这样做但是收到错误"运行时错误3000保留错误(-3002);此错误没有消息"

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

1 个答案:

答案 0 :(得分:0)

好的,设法搞定了。分享以防有人需要它。

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

分辨率:

首先,将SELECT语句保存为不带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