为了账号安全,请及时绑定邮箱和手机立即绑定

Ms Access查询:通过查询连接行

/ 猿问

Ms Access查询:通过查询连接行

UYOU 2019-10-22 22:21:54

假设我在Ms Access中有带有以下信息的表:


ColumnA ColumnB

1       abc

1       pqr

1       xyz

2       efg

2       hij

3       asd

我的问题是,如何将第二列中的值连接到基于第一列的行值。我想要的查询结果如下:


ColumnA ColumnB

1       abc, pqr, xyz

2       efg, hij

3       asd

我想通过查询来实现。有人可以帮助我实现这一目标吗?


查看完整描述

3 回答

?
慕粉4167745

您需要一个函数来进行串联。


Microsoft Access压缩表中的多行


使用数据的示例:


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;


查看完整回答
反对 回复 2019-10-22
?
largeQ

这是一个出色的链接:在SQL中如何通过调用函数来做到这一点。说明非常清楚,并且为您编写了该功能,因此您只需复制,粘贴和粘贴即可。即使是不了解VB的人也可以轻松实现它: 连接相关记录中的值


查看完整回答
反对 回复 2019-10-22
?
扬帆大鱼

这可能很难获得。如果必须在查询而不是函数中执行此操作,则将遇到的问题是可以连接成一列的行数限制。到目前为止,我发现实现此目标的唯一方法是通过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;

返回:


ColumnA  ColumnB 

1      abc,xyz 

2      efg,hij 

3      asd

这将只返回第一个和最后一个,但是我敢肯定,您只需做一点点工作就可以计算出Choose函数,但是就像我说的那样,您必须为要添加的每个其他项添加更多的iif语句,因此局限性。


查看完整回答
反对 回复 2019-10-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信