如何在不丢失数据的情况下联接和汇总表



下面是我尝试做的一个例子。

Select (t1.count+t2.count) as countTotal from t1 LEFT JOIN t2 ON (t1.ID = t2.ID);

我在更大的范围内做这件事,把许多变量加在一起。我遇到的问题是,如果其中一个ID不在我正在组合的表中,那么该ID的整行都会变为空白。我的目标是在大部分情况下将两个表相加,但如果其中一行只在一个表中,我如何在结果查询中保留这些数据?

使用NZ():

Select nz(t1.count) + nz(t2.count) as countTotal
from . . .

这将用0替换NULL值,从而使+起作用。否则,如果任何值为NULL,则返回NULL

假设任一表中都可能缺少ID,则需要使用FULL OUTER JOIN

如果一个表中缺少该行,t1.count + t2.count将返回Null

根据文档,当值为Null时,Nz的默认返回值为0或零长度字符串。我更喜欢写更清晰的代码,所以我指定了值。

SELECT Nz(t1.count, 0) + Nz(t2.count, 0) as countTotal
FROM t1
FULL OUTER JOIN t2 on t1.ID = t2.ID

我不得不做一些类似的事情,最终将其全部导出到excel,并手动仔细组合数据,这花了我大约4个小时。不过,这只适用于1200条记录,我使用了5个表,这些表的匹配列都有不同的名称,非常混乱。也许你可以尝试使用make表查询,但如果你有大量的字段,那么这是不可行的,我也不是100%可以。下一个最好的选择是导出表并将它们导入到支持完全外部联接的SQLIDE中。然后使用该完全联接创建一个表,并将其导出回Access。这肯定行得通。但是将表导入到SQLIDE可能会很棘手,我以前也遇到过这种问题。但一旦我进口了它们,一切都很顺利。

相关内容

最新更新