Sql 完全外部连接未按预期工作

Sql 完全外部连接未按预期工作,sql,sql-server-2012,Sql,Sql Server 2012,emv中有3行,1行没有匹配的rsfm.customer。未将此行添加到视图中 提前谢谢 Gerry您的位置限制了您的加入。将where移动到联接条件,或使用rsfm的派生表 或 完全外部联接相当棘手,尤其是在过滤方面 我想你可能想要: select * from ( select * from [dbo].[Revenue_pl_S_F_M] where fiscyr = 2017 and fiscper = 1 and glgroup = 'M'

emv中有3行,1行没有匹配的rsfm.customer。未将此行添加到视图中

提前谢谢 Gerry

您的位置限制了您的加入。将where移动到联接条件,或使用rsfm的派生表


完全外部联接相当棘手,尤其是在过滤方面

我想你可能想要:

select *
from  (
  select * 
  from [dbo].[Revenue_pl_S_F_M]  
  where fiscyr = 2017 
    and fiscper = 1 
    and glgroup = 'M'
    ) rsfm
  full join [dbo].[Expense_Misc_Variable] emv
    on emv.fiscyr = rsfm.fiscyr
    and emv.fiscper = rsfm.fiscper
    and emv.Warehouse = rsfm.Warehouse
    and emv.Customer = rsfm.Customer
当两个表中至少有一个匹配行与所需条件匹配时,这将返回两个表之间的匹配


不过,我的猜测是,对于您所面临的任何问题,完全外部联接可能不是最好的方法。你可以考虑用一个合适的数据样本和期望的结果来问另一个问题。

你在哪里阻止它被包括在内。好吧,那么还有另一种方法来得到我需要的吗?
select *
from  [dbo].[Revenue_pl_S_F_M] rsfm
  full join [dbo].[Expense_Misc_Variable] emv
    on emv.fiscyr = rsfm.fiscyr
    and emv.fiscper = rsfm.fiscper
    and emv.Warehouse = rsfm.Warehouse
    and emv.Customer = rsfm.Customer
    and rsfm.fiscyr = 2017 
    and rsfm.fiscper = 1 
    and rsfm.glgroup = 'M'
select *
from  (
  select * 
  from [dbo].[Revenue_pl_S_F_M]  
  where fiscyr = 2017 
    and fiscper = 1 
    and glgroup = 'M'
    ) rsfm
  full join [dbo].[Expense_Misc_Variable] emv
    on emv.fiscyr = rsfm.fiscyr
    and emv.fiscper = rsfm.fiscper
    and emv.Warehouse = rsfm.Warehouse
    and emv.Customer = rsfm.Customer
select *
from [dbo].[Revenue_PL_S_F_M] rsfm full join
     [dbo].[Expense_Misc_Variable] emv 
      on emv.FISCYR = rsfm.FISCYR and
         emv.FISCPER = rsfm.FISCPER and
         emv.Warehouse = rsfm.Warehouse and
         emv.Customer = rsfm.Customer
where coalesce(RSFM.FISCYR, emv.FISCYR) = 2017 and
      coalesce(RSFM.FISCPER, emv.FISCPER) = 1 and
      coalesce(RSFM.GLGroup, emv.GLGroup) = 'M';