通过Access SQL将字段数据连接成字符串

时间:2018-02-14 03:23:55

标签: sql ms-access

想象一下下表

ID | Name
----------
1  | Shaun
1  | Terrence
2  | Jessica

我需要根据ID

连接Name中的字符串数据
ID | Name
-----------
1  | Shaun, Terrence
2  | Jessica

我正在使用访问数据库。我以为我可以进行数据转换并尝试连接这些字段,但问题是很难动态地遍历总字段数。有什么想法吗?

**编辑:顺序没关系,我只想基于ID连接,空格是分隔符。我使用excel vba的ADO连接调用此sql代码。

1 个答案:

答案 0 :(得分:1)

这是我最近试图转动两列表的类似问题; MS Access convert and summarise two rows into columns with unique names

'Name'是保留字,'ID'通常是具有唯一编号的自动索引,因此我将列分别更改为UserID和UserName。

在单个子查询中创建答案存在一些问题,所以我最终这样做了:

  1. 使用索引创建临时表:
  2. 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;
    
    1. 创建临时交叉表格:
    2. TRANSFORM First(Table1_indexed.UserName) AS FirstOfUserName 
      SELECT Table1_indexed.UserID FROM Table1_indexed 
      GROUP BY Table1_indexed.UserID 
      PIVOT Table1_indexed.Index;
      
      1. 连接名称字段
      2. 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;
        

        如果您有两个以上的名称字段,可以将连接查询调整为您期望的最大数量。

        有可能将这些步骤合并为一个查询,但我还没有找到办法。