想象一下下表
ID | Name
----------
1 | Shaun
1 | Terrence
2 | Jessica
我需要根据ID
连接Name中的字符串数据ID | Name
-----------
1 | Shaun, Terrence
2 | Jessica
我正在使用访问数据库。我以为我可以进行数据转换并尝试连接这些字段,但问题是很难动态地遍历总字段数。有什么想法吗?
**编辑:顺序没关系,我只想基于ID连接,空格是分隔符。我使用excel vba的ADO连接调用此sql代码。
答案 0 :(得分:1)
这是我最近试图转动两列表的类似问题; MS Access convert and summarise two rows into columns with unique names
'Name'是保留字,'ID'通常是具有唯一编号的自动索引,因此我将列分别更改为UserID和UserName。
在单个子查询中创建答案存在一些问题,所以我最终这样做了:
SELECT t1.UserID, t1.UserName,
(SELECT COUNT(*) + 1
FROM Table1 t2
WHERE t1.UserID = t2.UserID and t2.UserName < t1.UserName) AS [Index]
INTO Table1_indexed
FROM Table1 AS t1;
TRANSFORM First(Table1_indexed.UserName) AS FirstOfUserName
SELECT Table1_indexed.UserID FROM Table1_indexed
GROUP BY Table1_indexed.UserID
PIVOT Table1_indexed.Index;
SELECT Table1_crosstab.UserID, Table1_crosstab.[1], Table1_crosstab.[2],
IIf([1] Is Not Null,[1]) & IIf([2] Is Not Null,", " & [2]) AS ConcatenatedName
FROM Table1_crosstab;
如果您有两个以上的名称字段,可以将连接查询调整为您期望的最大数量。
有可能将这些步骤合并为一个查询,但我还没有找到办法。