-1

我的 SQL 数据库中有两个相同的表,这些表分别由项目代码和数量组成。

我需要查看两个表中的哪些项目数量不同,哪些项目数量不同

不存在于另一个表中

我尝试在 ITEMCODE=ITEMCODE AND QTY<>QTY 上使用 FULL OUTER JOIN

它不工作

我得到的结果是这样的:

http://www.sendspace.com/file/nmb7yu

4

2 回答 2

1
select *
from table1 a full outer join table2 b 
on a.code = b.code 
where a.qty <> b.qty or a.code is null or b.code is null

我的幸运猜测是您过滤掉了代码列为空的行

于 2013-01-21T15:32:31.867 回答
1

尝试这样的事情:

SELECT  c.Code ,
        t1.Code ,
        t1.Qty ,
        t2.Code ,
        t2.Qty
FROM    ( SELECT    Code
          FROM      dbo.Table1
          UNION
          SELECT    Code
          FROM      dbo.Table2
        ) c
        LEFT OUTER JOIN dbo.Table1 t1 ON c.Code = t1.Code
        LEFT OUTER JOIN dbo.Table2 t2 ON c.Code = t2.Code
WHERE   t1.Code IS NULL
        OR t2.Code IS NULL
        OR t1.Qty <> t2.Qty

由于您在 WHERE 子句中测试了不等式,因此您隐式只包括两个表中的项目。通过这种方式,您可以包含一个表中的项目,但另一个表中的项目不包括在内,或者数量不同。

于 2013-01-21T15:33:12.273 回答