基于两个表在Access中连接行

时间:2015-01-29 01:41:47

标签: ms-access ms-access-2010

我想根据位置,日期和组号将组成员资格聚合到一个以空格作为分隔符的字段中。

表INDSIGHT:

    GROUP_IND | DATE_IND | STUDY_SITE | Subarea   
    01           9/9/2001   SDP          Shum
    01           9/9/2001   KOD          North 
    01           9/10/2001  SDP          Shum
    02           9/10/2001  SDP          Shum
    01           9/10/2001  KOD          East

表格图片有:

GROUP_IMG | DATE    | STUDY_SITE | INDIVIDUAL
01          9/9/2001  SDP           003
01          9/9/2001  SDP           004
01          9/9/2001  KOD           A16
01          9/9/2001  KOD           019
01          9/9/2001  KOD           021
01          9/10/2001 SDP           003
02          9/10/2001 SDP           006

我想要的是:

GROUP | DATE    | STUDY_SITE | Subarea | Individuals
01      9/9/2001  SDP           Shum      003   004
01      9/9/2001  KOD           North     A16   019   021

我使用Allen Browne的ConcatRelated函数实现了以下代码。

SELECT
    i.GROUP_IND,
    i.DATE_IND,
    i.STUDY_SITE,
    i.Subarea,
    ConcatRelated(
        "INDIVIDUAL",
        "IMAGES",
        "GROUP_IMG = '" & [GROUP_IND] & "'"
         and "DATE = '" & [DATE_IND] & "'"
         and "STUDY_SITE = '" & [STUDY_SITE]"'"
        ) AS Individuals
FROM INDSIGHT AS i;

该查询运行时没有错误,但结果不正确。结果列出了每个人,而不仅仅是特定群体的个人。

注意DATE字段是日期/时间,GROUP字段是文本。

1 个答案:

答案 0 :(得分:2)

根据您的示例数据,我认为此查询会返回您请求的结果。

SELECT
    i.GROUP_IND,
    i.DATE_IND,
    i.STUDY_SITE,
    i.Subarea,
    ConcatRelated(
        "INDIVIDUAL",
        "IMAGES",
        "GROUP_IMG = '" & i.GROUP_IND
            & "' AND [DATE] = " & Format(i.DATE_IND, "\#yyyy-m-d\#")
            & " AND STUDY_SITE = '"
            & i.STUDY_SITE & "'",
        "INDIVIDUAL",
        " "
        ) AS Individuals
FROM INDSIGHT AS i;

注意:

  • 名为[DATE]的字段用方括号括起来,因为它是一个保留字
  • 文字日期值以#个字符
  • 分隔
  • ConcatRelated的第三个参数必须是单个字符串;如果您需要调整任何内容,请小心引用
  • 我为第四个参数 strOrderBy 添加了一个字符串,因为在提供第五个参数 strSeparator 时,db引擎不会让我留空。改变口味。 : - )

如果您的实际完整数据集包含多个行,用于 GROUP_IND DATE_IND STUDY_SITE Subarea <的相同组合/ em>,您可能希望将其设为GROUP BY查询。创建ConcatRelated时请保持GROUP BY,并在GROUP BY正常工作后将其重新添加。