2017-03-14 79 views
0

我遇到了一個正確的連接問題,似乎沒有按照我的要求做。 以下查詢不會從grp表中恢復所有記錄。我期望有幾行匹配30555 gl記錄和grp表中的30行,併爲gl列填充空值。相反,我得到了30555 GL記錄預期的幾行,只有3相匹配,而不是30T-SQL右外連接似乎不起作用

select gl.Tran_Number, gl.Amount, gl.Cost_Center, ' - ' as blank, grp.* 
from GL_DETAIL_MC gl 
    right outer join EM_COST_GROUP_LIST_MC grp on grp.Cost_Center_Code = gl.Cost_Center and grp.Company_Code = gl.Company_Code 
where 
    (gl.Company_Code = 'RCL' or grp.Company_Code = 'RCL') 
    and (gl.Tran_Number = '30555  ' or gl.Transaction_ID is null) 

不是真的知道在哪裏我已經錯在這裏GRP行。哦,我應該提到,我試圖在測試數據庫中創建一個類似的表結構,一切都按我的預期工作。這導致我有一個數據庫設置正在改變查詢返回結果的方式。

回答

0

外連接很好。問題是where條款。

我想你打算:

select gl.Tran_Number, gl.Amount, gl.Cost_Center, ' - ' as blank, grp.* 
from EM_COST_GROUP_LIST_MC grp LEFT JOIN 
    GL_DETAIL_MC gl 
    on grp.Cost_Center_Code = gl.Cost_Center and 
     grp.Company_Code = gl.Company_Code and 
     gl.Company_Code = 'RCL' and 
     gl.Tran_Number = '30555 
where grp.Company_Code = 'RCL' or gl.Company_Code is not null; 

我更喜歡left joinright join