gpt4 book ai didi

sql - 如何在 MS-Access 中将 3 条记录分组为 1 行?

转载 作者:行者123 更新时间:2023-12-04 23:48:28 26 4
gpt4 key购买 nike

我希望table1中的数据显示为MS access 2000中的表

| contact_id | name                           | contact_type | 
| 297 | Primary Properties Corporation | Supplier |
| 297 | Primary Properties Corporation | Prospect |
| 297 | Primary Properties Corporation | Customer |
| 298 | San Miguel Corporation | Prospect |
| 301 | Sulpicio Lines | Supplier |

我希望它返回:

| contact_id | name                           | contact_type    
| 297 | Primary Properties Corporation | Supplier, Prospect, Customer |
| 298 | San Miguel Corporation | Prospect |
| 301 | Sulpicio Lines | Supplier |

我有一些方法,比如在 sql 中使用 group concat、xml_path,但它在 ms access 中不起作用。

请指导我。

最佳答案

这是一种方法:

  1. 打开 Visual Basic 编辑器...工具 --> 宏 --> Visual Basic 编辑器(或 AltF11 )

  2. 插入一个模块并粘贴到这个 UDF 中:

    'Concat returns a comma-seperated list of items
    Public Function Concat (CategoryCol As String, _
    ItemCol As String) As String
    Static LastCategory As String
    Static ItemList As String

    If CategoryCol = LastCategory Then
    ItemList = ItemList & ", " & ItemCol
    Else
    LastCategory = CategoryCol
    ItemList = ItemCol
    End If
    Concat = ItemList
    End Function


  3. 保存项目并关闭 VB 编辑器

  4. 查询下,在设计 View 中创建一个新查询。

  5. 切换到SQL View

  6. 粘贴此 SQL:

    SELECT 
    contact_id,
    name,
    LAST (Concat (contact_id, contact_type)) AS [contact_type]
    FROM
    table1
    GROUP BY
    contact_id,
    name
    ORDER BY
    contact_id


  7. 运行查询(按红色感叹号或只选择数据 TableView )。

  8. 完成!

关于sql - 如何在 MS-Access 中将 3 条记录分组为 1 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com