我有以下内容:
表A
ID | DocumentType | DocumentCode | DocumentDate | Warehouse | RefecenceCode
---+--------------+--------------+--------------+-----------+--------------
1 | DeliveryNote | DOC-001 | 2017-04-21 | 1 | NULL
2 | Invoice | DOC-002 | 2017-04-21 | 2 | DOC-001
如您所见,每个文档的仓库不同,DOC-002通过ReferenceCode
列中的信息与DOC-001相关(这意味着从DOC-001作为源文档开始创建)。
DOC-002应该具有相同的信息,但有时可能会有所不同,在这种情况下,我尝试创建一个查询(我认为self join
适用于此处)以检查哪些信息在这种情况下DOC-002与DOC-001相比有所不同,基于参考代码,但我无法设法做到这一点。
如果有人能帮助我,我会非常感激。
这是SQL查询:
select *
from TableA tbl
inner join TableA tbla on tbl.id = tbla.id
where tbla.ReferenceCode = tbl.DocumentCode
答案 0 :(得分:0)
你确实想加入这个表格。但是加入ID
列将不起作用,因为该列不会将记录相互关联。相反,您需要加入DocumentCode
和ReferenceCode
字段。然后只包括有一些差异的记录(在这种情况下,我只是比较DocumentDate和Warehouse字段)。
select tbla.*
from TableA tbl
join TableA tbla on tbl.DocumentCode = tbla.ReferenceCode
where tbla.DocumentDate != tbl.DocumentDate
or tbla.Warehouse != tbl.Warehouse