如何使用数据透视查询汇总基于文本的列
How to roll up text-based columns with a pivot query
我有一个访问权限 table,每个 ID 有一个 UniqueId
和多个 phone Numbers
。
我可以将那些 phone 数字滚动到单独的列中吗? 有 160 thds 加上无数行 phone #'s
所有字段都是文本字段。
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
这可以通过以下步骤完成:
- 使用 DCount 函数将 "Phone1"、"Phone2" 等分配给字段。
- 使用 Pivot Query.
要使用这种方法,您需要确保您的 table 中有唯一标识符。 (即,如果还没有,您可以添加 "autonumber" 字段)
这是第 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()" 命令将文本转换为长整型的查询。
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 字段可以旋转成列。使用 Pivot Table 向导来协助,或者这里是示例 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。
我有一个访问权限 table,每个 ID 有一个 UniqueId
和多个 phone Numbers
。
我可以将那些 phone 数字滚动到单独的列中吗? 有 160 thds 加上无数行 phone #'s
所有字段都是文本字段。
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
这可以通过以下步骤完成:
- 使用 DCount 函数将 "Phone1"、"Phone2" 等分配给字段。
- 使用 Pivot Query.
要使用这种方法,您需要确保您的 table 中有唯一标识符。 (即,如果还没有,您可以添加 "autonumber" 字段)
这是第 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()" 命令将文本转换为长整型的查询。
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 字段可以旋转成列。使用 Pivot Table 向导来协助,或者这里是示例 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。