返回SQL行,其中访问时每行的数据已合并

时间:2011-07-17 03:24:40

标签: sql ms-access

在访问中,我有一个类似

的表
ID| ROOMS | NOTES|
78|    234|      |
3 |    231|  key |
78|    195|      |
3 |    164|      |

我想要一个sql查询,它将获取ID并将它们组合成一行,所以它就像

78 -> 234,195
3->231, 164 -> key

我只想将查询号中的行合并到一个新表中

2 个答案:

答案 0 :(得分:0)

不幸的是,您必须构建一个函数来执行此操作,但幸运的是,访问支持在SQL查询中使用VBA函数。

例如,基于给定ID将边缘连接在一起的函数如下:

Public Function MyRooms(lngID As Variant) As Variant

   Dim rstRooms         As DAO.Recordset

   If IsNull(lngID) Then Exit Function

   Set rstRooms = "select Rooms from tblBookings where id = " & lngID
   Do While rstRooms.EOF
      If MyRooms <> "" Then MyRooms = MyRooms & "->"
      MyRooms = MyRooms & rstRooms!Rooms
      rstRooms.MoveNext
   Loop
   rstRooms.Close

End Function

现在您的查询可能如下所示:

Select id, MyRooms([id]) as Rooms, Notes from some table.

您还可以为notes列创建相同的函数,并再次将其放在上面的查询中。

答案 1 :(得分:0)

是您的问题“如何在Access中进行group_concat?” 此链接可能有用: is there a group_concat function in ms-access?