如何在MS访问中合并行?

时间:2009-09-14 06:11:29

标签: sql ms-access

我在MS Access中有一个包含这样记录的表:

ID  field2  field3  field4  field5
1   345       asr
2             ase     567    788
3   456       ghy
4             jki     568    899
5   235       yui
6             hju     456    456

我想合并它以获得这样的表:

ID      field2  field3  field4  field5
1           345 asrase     567    788
3           456 ghyjki     568    899
5           235 yuihju     456    456

这可以通过查询吗?

4 个答案:

答案 0 :(得分:1)

假设行继续像示例一样,此查询将执行:

select a.id, 
    a.field2, 
    a.field3 + Iif(IsNull(b.field3),'',b.field3), 
    b.field4, 
    b.field5
from table1 a
left join table1 b on b.id = a.id + 1
where a.field2 is not null

它自己加入表,寻找下一行。它将两行组合在一起以产生所需的结果。

答案 1 :(得分:0)

我想你可能会。从您的示例行来看,您希望每个“偶数”和“奇数”行以明确定义的方式合并在一起。

有了这样的问题,如果你不知道的话,我会开始使用查询编辑器来玩。例如,您是否可以创建一个计算第二个实际ID的伪id的查询?我认为你可以,这将让你得到一个公共ID,将2个字段与。

联系起来

但还有其他方法可以将这两个领域联系起来。您可以将表与自身合并,选择第一个版本为非NULL字段4(或5),第二个版本ID与第一个版本的ID相同。

如果您使用我先提出的1/2 ID ID方法,那么最简单的方法是创建1个查询以获取“偶数”,另一个获取“奇数”行。然后,您只需将第二个查询合并在一起。

一旦你有了一个解决方案,你可以用它来解决它,并尝试其他的东西。

我首先在查询编辑器中播放,然后在完成后查看SQL。

PS:我确信我可以为你编写答案,但你会有什么乐趣? ; - )

答案 2 :(得分:0)

我采用了与Andomar略有不同的方法,并使用mod函数返回偶数行。

SELECT a.id, a.field2, a.field3 + IIF(b.field3 IS NULL,'', b.field3), 
       b.field4, b.field5
  FROM Table1 AS a
       INNER JOIN Table1 AS b 
          ON a.ID = b.ID + 1
 WHERE Table1_1.ID MOD 2 = 0;

答案 3 :(得分:0)

我不认为这里的任何答案都是健壮的,因为它取决于ID字段是连续的,即使连续的,它也是的权利在下一个连续记录中的值。

我想更多地了解Field3中的数据,即它是否有意义。