Sql 表1中的所有行和表2中的匹配行

Sql 表1中的所有行和表2中的匹配行,sql,join,teradata,Sql,Join,Teradata,下面代码的第一部分给出了记录776的正确数量和数量。当我加入表b时,代码运行,但没有提供我要寻找的答案。问题是第二个表没有包含我从第一个查询中得到的所有部门/帐户组合 我要做的是显示第一个表中的所有记录,不管第二个表中是否有匹配项。如果组合在表2中,那么我将得到一个金额。我试着使用不同的接头左外、左外、右外和右外,但没有任何运气。所有的连接都给了我相同数量的记录412,而不是776,因为它在分支上是匹配的 我如何更改它以从查询的第一部分获取所有记录,而不管表2中是否有记录。再次感谢你的帮助 SE

下面代码的第一部分给出了记录776的正确数量和数量。当我加入表b时,代码运行,但没有提供我要寻找的答案。问题是第二个表没有包含我从第一个查询中得到的所有部门/帐户组合

我要做的是显示第一个表中的所有记录,不管第二个表中是否有匹配项。如果组合在表2中,那么我将得到一个金额。我试着使用不同的接头左外、左外、右外和右外,但没有任何运气。所有的连接都给了我相同数量的记录412,而不是776,因为它在分支上是匹配的

我如何更改它以从查询的第一部分获取所有记录,而不管表2中是否有记录。再次感谢你的帮助

SELECT
    a.Account,
    a.Branch,
    a.Department,
    a.Amount,
    b.Total_Amount, 
    a.Amount - b.Total_Amount as DIFF

FROM 

    (SELECT 
        pdr.account_fa AS Account,
        ir.branch_lgcy_cd AS Branch,
        pdr.Department,
        sum(pdr.COST) AS Amount

    FROM PSFS.DEPR_RPT pdr 

    INNER JOIN INTGRT_RPT.DIM_LOCATION ir ON pdr.Department = ir._branch_ps_org_cd AND ir.curr_lrd_row_flg = 1

    WHERE pdr.BUSINESS_UNIT = 'A5'
    AND pdr.FISCAL_YEAR = 2015
    AND pdr.ACCOUNTING_PERIOD = 8

    GROUP BY Account, Branch, department

    UNION ALL

    SELECT
    pdr.account_ad AS Account,
    ir.erac_branch_lgcy_cd AS Branch,
    pdr.Department,
    sum(pdr.depr_ltd) AS Amount

    FROM PSFS.PS_DEPR_RPT pdr 

    LEFT JOIN INTGRT_RPT.DIM_LOCATION ir ON pdr.Department = ir.branch_ps_org_cd AND ir.curr_lrd_row_flg = 1

    WHERE pdr.BUSINESS_UNIT = 'A5'
    AND pdr.FISCAL_YEAR = 2015
    AND pdr.ACCOUNTING_PERIOD = 8

    GROUP BY Account, Branch, Department ) a

INNER JOIN PSFS.PS_GL_ACCT_LDGR b ON a.deptid = b.grp_br_ps_org_id 
    AND a.fa_acct = b.acct_nbr
    AND b.fiscal_yr_mth_nbr = 201508

GROUP BY Account, Branch, Department, Amount, Total_Amount

ORDER BY 1, 2

a.deptid上的内部联接PSFS.PS\u GL\u ACCT\u LDGR b若要将此更改为左外部联接

Hi,请尝试使用完全外部联接左外部联接应执行所需操作。它返回第一个表中的所有行。如果一行在第二个表中没有匹配项,它将为这些列返回NULL。您能否显示一些示例输入和所需的输出,并制作一个SQLFIDLE进行处理?