SQL从两个表中选择值不同的行,包括空值

时间:2015-12-11 04:14:34

标签: sql database querying

我已经阅读了其他一些帖子,但未能找到答案。我有两个表,我正在链接(A& B)。我要做的是获取列值不同的所有行。

我知道我需要一个OUTER JOIN来检索这些行,但它没有返回NULLS。

这是我的情景:我们(我的公司)是第三方业务。我们为客户外包工作。因此,当我们的外包商有一定的费用时,我需要将这笔费用加到我的客户方面。事情陷入困境,我们并不总是记得将这些费用加到我的客户工资上(导致我们赔钱,我们正在偿还我们的外包商)

因此,我正在构建一份报告,该报告将从2个表(客户和外包商)中提取所有记录,其中包括付款详细信息。我需要从两个表中提取费用记录,只有费用的总和(因为可能有多个费用记录)不匹配。意味着价值不同或外包商增加了费用但客户没有(意味着空值发挥作用)

这是我的,但它不会返回空值。我想我可能要做子查询,但我不确定。任何帮助将不胜感激!

SELECT c.jobNum, SUM(c.expenses) as cExp, SUM(o.expenses) as oExp 
FROM customer AS c
FULL JOIN outsourcer AS o
ON c.jobNum = o.jobNum
WHERE cExp <> oExp
GROUP BY c.jobNum

1 个答案:

答案 0 :(得分:0)

我希望这会有所帮助

SELECT t.jobNum,t.cExp,t.oExp
FROM
    (SELECT c.jobNum, SUM(c.expenses) as cExp, SUM(o.expenses) as oExp
     FROM customer AS c
     FULL JOIN outsourcer AS o
     ON c.jobNum = o.jobNum
     GROUP BY c.jobNum
    )t
WHERE t.cExp <> t.oExp