我有两个视图,其中包含ID,单位和数量。一种观点是实际的,一种是估计的。我想要一个select语句,它将返回两个视图中所有行的特定ID,无论这些单元是否都在两个视图中。我似乎无法使用FULL OUTER JOIN,因为我需要加入ID和单位。
在此示例中,vVMVoyEstTotalBLQuantitySrch包含CBM的条目,该条目不在vVMVoyBLQuantitySrch中。我仍然想要所有的行,例如:
它也可能是另一种方式,例如vVMVoyEstTotalBLQuantitySrch不包含特定单元,但vVMVoyBLQuantitySrch会这样做,而且我想要所有行。如果它至少在其中一个视图中,则返回它。
我已经尝试了一些来自互联网的代码片段,在ID和单元上都使用了COALESCE,但后来我只得到了缺失的条目(CBM),而不是全部。
请帮忙!
答案 0 :(得分:0)
你的尝试看起来像这样吗?
select . . .
from view1 v1 full outer join
view2 v2
on v1.id = v2.id
where 15506 in (v1.id, v2.id);
诀窍是你必须检查两个ID,因为full outer join
可能会产生NULL
个值。
答案 1 :(得分:0)
尝试以下查询
SELECT ISNULL(q1.Id,q2.Id) As Id,
ISNULL(q1.estLoadUnit,q2.ActLoadUnit) As Units,
q1.EstTotalLoaded,
q2.ActTotalLoadded
FROM vVMVoyEstTotalBLQuantitySrch q1
FULL OUTER JOIN vVMVoyBLQuantitySrch q2 ON q1.Id = q2.Id
AND q2.actLoadUnit = q1.EstLoadUnit