首页 > 解决方案 > 如何转换类似于交叉表的 Access 数据

问题描述

我有想要显示的数据,类似于交叉表查询,但不完全是。我拥有的数据看起来像这样,每个数据段位于不同的行: 每行数据

我希望将数据合并到每个客户端的一行中,如下所示: 数据全部在一行

我已经尝试使用交叉表查询进行此操作,但我不想汇总任何字段,并且每个产品都有几个数据点(类型、名称、购买日期等)。

任何帮助是极大的赞赏!

标签: sqlms-accesscrosstab

解决方案


不是一个非常实用的数据表示,但它是可能的。需要一个唯一的标识符字段 - 自动编号应该服务 - 我称之为 RID。考虑:

查询一:

SELECT RID, ID, FirstName, LastName, Dept, ProductType AS Data, "PT" AS Cat FROM Table1
UNION SELECT RID, ID, FirstName, LastName, Dept, ProductName, "PN" FROM Table1
UNION SELECT RID, ID, FirstName, LastName, Dept, PurchaseDate, "PD" FROM Table1
UNION SELECT RID, ID, FirstName, LastName, Dept, PurchaseCost, "PC" FROM Table1
UNION SELECT RID, ID, FirstName, LastName, Dept, DeliveryDate, "DD" FROM Table1;

查询 2:

TRANSFORM First(Query1.Data) AS FirstOfData
SELECT Query1.ID, Query1.FirstName, Query1.LastName, Query1.Dept
FROM Query1
GROUP BY Query1.ID, Query1.FirstName, Query1.LastName, Query1.Dept
PIVOT DCount("*","Query1","ID=" & [ID] & " AND Cat='" & [Cat] & "' AND RID<" & [RID])+1 & [Cat];

但是,有 255 个字段的限制,因此可能会有更多的数据无法处理。


推荐阅读