在 Access 中的一个字段中连接多行?

Kyl*_*wke 4 sql ms-access

可能的重复:
Ms Access 查询:通过查询连接行

我有一个包含很多列的表,但有两个感兴趣的列:订单号和产品类型。目前,该表每个订单有多个产品类型。如果客户订购了电话服务、电视服务和互联网服务,那么将有三条记录——每项服务一个,但都具有相同的订单号。我想创建一个参考表来存储一个包含客户订购的所有服务的串联字符串。这样我就可以使用这种更合乎逻辑的方法来总结我的数据。我正在使用标准的 Access 2010 数据库。

**Current table:**

Order Number | Product Types

100001 | TV

100001 | Phone

100001 | Internet

100002 | Phone

100003 | TV

100003 | Internet
Run Code Online (Sandbox Code Playgroud)

所需参考表

100001 | TV/Phone/Internet

100002 | Phone

100003 | TV/Internet
Run Code Online (Sandbox Code Playgroud)

Han*_*sUp 6

Allen Browne 提供了一个您可能会发现对此有用的函数:连接相关记录中的值。将该函数的代码保存在标准模块中。

SELECT DISTINCT
    [Order Number],
    ConcatRelated("[Product Types]",
        "YourTable",
        "[Order Number] = " & [Order Number],
        "[Product Types]",
        "/"
        ) AS All_Product_Types
FROM YourTable;
Run Code Online (Sandbox Code Playgroud)

我在 Access 2007 中使用保存在名为“ YourTable ”的表中的示例数据测试了该查询。它返回了您要求的结果。但是,这仅适用于 Access 会话中。如果您想从 Access 外部(如从 ASP)运行此查询,则用户定义的函数不可用,因此您会收到关于ConcatRelated()无法识别的错误。

因此,您可以在需要时使用查询来检索连接的值。但是,如果您存储这些串联值,它们很快就会与基表数据的更改不同步。