ms access查询到数据透视列的SQL语法

ms access查询到数据透视列的SQL语法,sql,ms-access,Sql,Ms Access,我正在尝试为我的公司整理以前销售的数据,现在看起来是这样的: Item1 Item2 Clock Spring Hands Nuts Dial Clock Clock Hands Hands Spring 我需要的是这个 Item1 Product1 Product2 Clock Spring Hands Hands Nuts Spring Dial Clock 我有大约1000个数据点,所以我想要动态的东西,但我做

我正在尝试为我的公司整理以前销售的数据,现在看起来是这样的:

Item1    Item2
Clock    Spring
Hands    Nuts
Dial     Clock
Clock    Hands
Hands    Spring
我需要的是这个

Item1   Product1   Product2
Clock   Spring    Hands
Hands   Nuts      Spring
Dial    Clock
我有大约1000个数据点,所以我想要动态的东西,但我做到了这一点:

SELECT transdata.item1, Product1, Product2, Product3
(
SELECT transdata.item1, transdata.item2,
     'Product' + CAST(ROW_NUMBER() over (Partition By transdata.[item1] Order By transdata.item1) AS Varchar(10)) AS ColSequence
FROM transdata
) Temp

PIVOT
(
MAX(Product)
For ColSequence in (Product1, Product2, Product3)
)PIV

它说我有一个语法错误

这在MS Access中会非常痛苦。但这个相对简单的版本最多适用于两列:

select item1, min(item2) as product1,
       iif(min(item2) <> max(item2), max(item2), null) as product2
from transdata
group by item1
选择item1,min(item2)作为product1,
iif(最小值(项目2)最大值(项目2),最大值(项目2),null)作为产品2
从transdata
按项目分组1

是否有办法将其扩展到产品“n”问题是我有大量数据不确定最多有多少产品与第1项的值关联如果没有问题,这就足够了:)再次感谢@斯蒂芬斯塔德迈尔。只可能回答实际提出的问题(至少在大多数情况下)。这就回答了您提出的问题,即pivot中的两个产品。如果你有不同的问题,那么请作为新问题提问。