我有一个访问表,每个ID都有UniqueId
和多个phone Numbers
我可以将这些电话号码分成不同的列吗?有160多个行加上无数电话号码
所有字段均为TEXT字段。
ID Phone
1 502
1 402
2 375
3 502
4 777
4 645
结果我希望看到......
ID Phone1 Phone2 Phone3
1 502 402
2 375
3 502
4 777 645
答案 0 :(得分:2)
这可以通过以下步骤完成:
要使用此方法,您需要确保您的表中包含唯一标识符。 (即如果还没有“自动编号”字段,则可以添加“自动编号”字段)
以下是第1步的示例查询
SELECT Table1.UniqueID, Table1.ID, Table1.Phone,
"Phone" & DCount("Phone","Table1","ID=" & [ID] & " AND UniqueID<=" & [UniqueID]) AS row_id
FROM Table1
ORDER BY Table1.ID, Table1.Phone;
由于您后来提到所有字段都是文本字段,因此这是一个使用“CLng()”命令将文本转换为Long Integer的查询。
SELECT WrkingFile.ID
, WrkingFile.IndividualMatchID
, WrkingFile.Phone
, "Phone" & DCount("Phone","[WrkingFile]","cLng(IndividualMatchID)=" & CLng([IndividualMatchID]) & " AND cLng(ID)<=" & CLng([ID])) AS row_id
FROM WrkingFile
ORDER BY WrkingFile.IndividualMatchID, WrkingFile.Phone;
这将为您提供如下输出:
现在,在第2步中,row_id字段可以旋转到列中。使用数据透视表向导来协助,或者这里是示例SQL:
TRANSFORM First(Query1.[Phone]) AS FirstOfPhone
SELECT Query1.[ID]
FROM Query1
GROUP BY Query1.[ID]
PIVOT Query1.[row_id];
这是输出:
上述内容摘自Microsoft Access社区网站的post by Roger Carlson。