Sql 完全外部连接未按预期工作
emv中有3行,1行没有匹配的rsfm.customer。未将此行添加到视图中 提前谢谢 Gerry您的位置限制了您的加入。将where移动到联接条件,或使用rsfm的派生表 或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'
完全外部联接相当棘手,尤其是在过滤方面 我想你可能想要:
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';