You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ConcatRelated函数实现异常:合并行后仅显示病历编号求助

问题排查与修复方案

核心问题梳理

  1. 查询1的WHERE子句错误:原SQL引用了未生成的查询自身字段[was on treatment query].[Number_medical_history],导致查询1无法正确筛选数据,直接影响后续合并逻辑。
  2. 查询2的SELECT子句错误:直接写[was on treatment query]是引用整个查询对象而非具体分组字段,导致仅返回分组字段,合并后的United字段无法正常输出。
  3. ConcatRelated参数错误:原条件用Id = & ...,但实际要按Number_medical_history分组合并,条件完全不匹配;同时字段引用多了不必要的查询前缀。
  4. GROUP BY子句不匹配:SELECT中的字段和GROUP BY字段未对应,不符合Access SQL的语法要求。

修复后的查询1 SQL (was on treatment query)

SELECT 
    [was on treatment].[Number_medical_history] AS "Number medical history",
    [was on treatment].datefrom AS datefrom,
    [was on treatment].dateto AS dateto,
    [was on treatment].[hospital name] AS "hospital name",
    "from " & [datefrom] & " to " & [dateto] & " in " & [hospital name] & ";" AS United
FROM [was on treatment]
WHERE [was on treatment].[Number_medical_history] = [Forms]![Forms_1]![Number_medical_history];
  • 修正WHERE子句的字段引用,改为直接从原数据表[was on treatment]获取字段
  • 简化字符串拼接的冗余空格,让语句更简洁

修复后的查询2 SQL (was on treatment query united)

SELECT 
    q.[Number medical history],
    ConcatRelated(
        "United",
        "[was on treatment query]",
        "[Number medical history] = '" & q.[Number medical history] & "'"
    ) AS United
INTO healing_from_to IN 'C:\AAC\BD\Onlytable.accdb'
FROM [was on treatment query] AS q
WHERE q.[Number medical history] = [Forms]![Forms_1]![Number_medical_history]
GROUP BY q.[Number medical history];
  • 给查询起别名q,简化字段引用
  • SELECT明确指定分组字段q.[Number medical history],确保和GROUP BY对应
  • 修正ConcatRelated的筛选条件,改为按Number medical history匹配同组数据,同时移除不必要的查询前缀
  • 保留WHERE子句的筛选逻辑,确保只处理表单指定的病历号数据

内容的提问来源于stack exchange,提问作者Wild YT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:25:06