reg*_*gie 25 sql ms-access group-by concatenation
假设我在Ms Access中有一个表,其中包含以下信息:
ColumnA ColumnB
1 abc
1 pqr
1 xyz
2 efg
2 hij
3 asd
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何将第二列中的值连接到基于第一列的行值.我想要的查询结果如下:
ColumnA ColumnB
1 abc, pqr, xyz
2 efg, hij
3 asd
Run Code Online (Sandbox Code Playgroud)
我想通过查询来实现这一点.有人能帮助我实现这个目标吗?
Tho*_*mas 24
您需要一个函数来进行连接.
使用您的数据的示例:
Select T.ColumnA
, GetList("Select ColumnB From Table1 As T1 Where T1.ColumnA = " & [T].[ColumnA],"",", ") AS ColumnBItems
From Table1 AS T
Group By T.ColumnA;
Run Code Online (Sandbox Code Playgroud)
这可能很难获得。如果您必须在查询中而不是在函数中执行此操作,那么您将遇到的问题是可以连接到一列中的行数的限制。到目前为止,我发现实现这一目标的唯一方法是通过 iif 语句。
SELECT
test1.ColumnA AS ColumnA,
First([test1].[ColumnB]) & IIf(Count([test1].[ColumnB])>1,"," & Last([test1].[ColumnB])) AS ColumnB
FROM test1
GROUP BY test1.ColumnA;
Run Code Online (Sandbox Code Playgroud)
返回:
ColumnA ColumnB
1 abc,xyz
2 efg,hij
3 asd
Run Code Online (Sandbox Code Playgroud)
这将只返回第一个和最后一个,但我相信你可以通过一些工作来计算出选择函数,但就像我说的那样,你必须为要添加的每个附加项目添加更多的 iif 语句,因此局限性。