【问题标题】:Concatenating columns to a single row in MS Access在 MS Access 中将列连接到单行
【发布时间】:2013-12-16 13:45:23
【问题描述】:

我在 Access 2010 数据库中的查询中得到以下结果:

Name          Column1       Column2         Column3
-----------------------------------------------------------
Example1          52          447            52447
Example1          52          455            52455
Example1          52          454            52454
Example1          52          453            52453
Example2          100         000            100000
Example2          101         001            999999

我需要转换这些数据,将每一列连接到一行,例如:

Name        Column1       Column2                Column3
------------------------------------------------------------------
Example1      52      447,455,454,453    52447,52455,52454,52453
Example2    100,101       000,001            100000, 999999

由于我还是 Access 的新手,因此我为此搜索了 VBA 函数,但我发现的每一个函数都忽略了对我来说很重要的一点:

其中一些行的列有超过 255 个字符(总字符数),所以我将无法使用我找到的函数;

这是一个处理类似案例的主题,但它仍然不符合我的解决方案:

Microsoft Access condense multiple lines in a table

这个,艾伦·布朗:http://allenbrowne.com/func-concat.html

有人可以帮忙吗?

问候,

【问题讨论】:

  • 这是一个 column(不是 collum
  • 哦,很抱歉出现错误。

标签: ms-access


【解决方案1】:

我认为您找到的第二个解决方案是有效的:http://allenbrowne.com/func-concat.html 您需要更改条件,因为您的表有一个双键 (name, column1)

你的选择应该是这样的:

SELECT Name, Column1, 
           ConcatRelated("Column2", "MyTable", "Name = '" & [Name] & "' And Column1 = " & [Column1]) as C2, 
           ConcatRelated("Column3", "MyTable", "Name = '" & [Name] & "' And Column1 = " & [Column1]) as C3
    FROM MyTable

请注意,对于大数据,此解决方案可能会非常慢

【讨论】:

  • 它不会...它将我的数据连接到文本,而不是备忘录。
  • select 语句将在内存上运行,因此列的数据类型无关紧要。如果您需要将结果保存到表中,字段大小将与连接值的大小有关。如果您有很多值,则无法将它们保存在文本字段中
  • 我还是想不出办法。
  • 我收到语法错误...我在选择查询中执行此操作,但挖掘此数据的最佳方法是什么?
  • 我做到了!我刚刚错过了一些数据。感谢您的回复,我发现这段代码非常适合:)
猜你喜欢
  • 1970-01-01
  • 2012-03-09
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多