我在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
这可以通过查询吗?
答案 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中的数据,即它是否有意义。