【问题标题】:Concatenating values based on 2 adjacent values in MS Access基于 MS Access 中 2 个相邻值的连接值
【发布时间】:2015-04-30 17:18:32
【问题描述】:

我有一个 500,000 行导入 MS Access 的 Excel 表。它具有以下格式的 3 列

 Staff    Locations     Roles
   1      Location1     Role1
   1      Location2     Role1
   2      Location2     Role2
   3      Location3     Role3
   3      Location3     Role4

我正在尝试获取以下格式的输出

 Staff      Locations                 Roles
   1        Location1, Location2      Role1
   2        Location2                 Role2
   3        Location3                 Role3
   3        Location3                 Role4

关于如何在 MS Access 中完成相同任务的任何建议?

提前致谢

【问题讨论】:

  • 尝试使用this SO question.发布的解决方案
  • @bill 谢谢我已经调查过了。该解决方案基于一列中的相似值进行连接。我正在尝试根据两列中的相似值来完成相同的操作。

标签: ms-access concatenation


【解决方案1】:

我不确定@Bill 提供的代码是如何工作的,因为我没有使用它或测试过它,尽管我使用了一个已被证明对需求更灵活的代码。该函数由 Allen Browne 编写,名为ConcatRelated。

该函数接受三个主要参数,类似于域函数。

  1. 您尝试组合/连接的字段是您的第一个参数。
  2. 您正在查找的 Table 是您的第二个参数。
  3. 分组依据的条件。

还有另外两个可选参数,你可以在其中告诉你如何Order结果(第四个参数)和你想要什么Separator(第五个参数),默认是逗号。

然后该函数可以在查询中使用,类似于。

SELECT
    Staff,      
    ConcatRelated("Locations", "yourTableName", "Staff = " & yourTableName.Staff & " AND Roles = '" yourTableName.Roles "'") As NewLocation              
    Roles
FROM
    yourTableName
GROUP BY 
    Staff,
    Roles;

这应该为您提供正确的信息。

【讨论】:

  • 根据您的建议,我尝试了如下查询 SELECT myTable.Staff, ConcatRelated("Locations","myTable","Staff = '" & myTable.Staff & "' AND Roles = '" & myTable.Roles & "'") AS NewLocation, myTable.Roles FROM myTable;该查询执行了连接,但我注意到它在连接后并没有删除重复的单元格。所以我最终以以下格式工作人员位置角色 1 位置 1、位置 2 角色 1 1 位置 1、位置 2 角色 1 2 位置 2 角色 2 的行数相同
  • @PottaPitot,您缺少 GROUP BY。我已将其包含在我的答案中。你有什么理由不把它包括在内?
  • 是的,它修复了它。那是我不包括它的坏处。非常感谢您的解决方案。你为我节省了大量时间。
猜你喜欢
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
相关资源
最近更新 更多