根据ID列从1列生成多个列,...使用ADO访问VBA

时间:2017-03-25 20:18:23

标签: ms-access access-vba ado

我有一个像这样的表数据:

ID |日期|的 TIME

1 | 01/12 | 01:00

1 | 01/12 | 02:00

1 | 02/12 | 03:00

2 | 01/12 | 01:00

如何从列(时间)生成多个列以进行划分,如下面的结果,具体取决于字段ID,日期:

ID |日期| 时间1 | 时间2 | 时间3 |的时间4

1 | 01/12 | 01:00 | 02:00 | 03:00 | 04:00

1 | 02/12 | 01:00 | 02:00 | 03:00 | 04:00

2 | 01/12 | 01:00 | 02:00 | 03:00 | 04:00

更喜欢使用ado,循环

1 个答案:

答案 0 :(得分:0)

您想要'透视'或'非规范化'数据。 CROSSTAB不会生成标题Time1,Time2等,因为这将需要另一个具有每个ID / Date组的序列标识符的字段。您可以执行将时间用作列标题的CROSSTAB。这假设每次至少有一条记录为每次生成一列。还假设所有时间都在小时,如示例所示。

TRANSFORM First(Table1.Time) AS FirstOfTime
SELECT Table1.ID, Table1.Date
FROM Table1
GROUP BY Table1.ID, Table1.Date
PIVOT Table1.Time;

审核Pivot the data from Rows to Column

日期是Access中的保留字,不应使用保留字作为任何名称。