【发布时间】:2011-06-03 16:23:36
【问题描述】:
我正在处理一些嵌套视图以将它们合并到一个视图中。在合并视图中,我有一个机会表和一个报价表,我正在对机会 id 进行完全联接,以便获得所有报价、所有机会以及相关联的那些。
现在,有趣的是,我需要加入一个名为 accounts 的表。鉴于并非所有机会都有报价,反之亦然,无论如何我都需要一种加入表格以获取帐户的好方法(理论上,如果有机会和报价,他们应该 拥有相同的帐户)。如果两者都存在,为了保持一致性,我想使用报价中的数据。
我尝试的第一件事是:
left outer join dbo.Accounts a
on q.AccountID=a.AccountID
or o.AccountID=a.AccountID
现在我遇到的问题是,如果我同时拥有报价和机会,它似乎会返回多行,这不是我想要的。
第二次尝试我想出了这个:
left outer join dbo.Accounts a
on coalesce(q.AccountID,o.AccountID)=a.AccountID
这似乎给了我准确的结果,但我很好奇是否有更好的方法来获得我想要的而不导致连接中的函数。
【问题讨论】:
-
我喜欢你第二次尝试使用 coalesce。
标签: sql sql-server-2005 sql-server-2008 join