Ms access 根据其ID从1列生成多个列,。。。使用ADO访问VBA

Ms access 根据其ID从1列生成多个列,。。。使用ADO访问VBA,ms-access,vba,ado,Ms Access,Vba,Ado,我有这样一个表数据: ID |日期|时间 1 | 01/12 | 01:00 1 | 01/12 | 02:00 1 | 02/12 | 03:00 2 | 01/12 | 01:00 如何根据字段ID、日期从要划分的列(时间)生成多个列,如下面的结果: ID | Date |Time1|Time2|Time3|Time4 1 | 01/12 | 01:00 | 02:00 | 03:00 | 04:00 1 | 02/12 | 01:00 | 02:00 | 03:00 | 04:00 2 |

我有这样一个表数据:

ID |日期|时间

1 | 01/12 | 01:00

1 | 01/12 | 02:00

1 | 02/12 | 03:00

2 | 01/12 | 01:00

如何根据字段ID、日期从要划分的列(时间)生成多个列,如下面的结果:

ID | Date |Time1|Time2|Time3|Time4

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,循环

您想要“透视”或“非规范化”数据。交叉表不会生成标题Time1、Time2等,因为这需要为每个ID/日期组生成另一个带有序列标识符的字段。您可以使用时间作为列标题进行交叉表。这假设每次至少有一条记录来为每次生成一列。还假设所有时间都在小时内,如示例所示

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


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

04:00从何而来?以这种方式提问不会帮助您获得答案,对于描述不清的问题,请不要使用“此问题至关重要”,这会让人们对把时间花在一个他们无法解决的问题上感到愤怒,因为你们在问题的构成上投入的努力不够。相反,它应该正确格式化、明确定义并以清晰的方式提出。