Tsql T-SQL在SQL Server 2012中的联接中丢失记录

Tsql T-SQL在SQL Server 2012中的联接中丢失记录,tsql,sql-server-2012,Tsql,Sql Server 2012,在SQLServer2012中,我尝试从两个表中提取数据。我正在丢失从BO表到ItemNumber上的PO表的联接的记录。我如何解决这个问题?BO表查询最初提取309行,完整查询提取280行。我知道有些项目在PO表中不存在,但在BO表中确实存在,但我仍然需要查看最终结果中的项目,这样我就可以说它们是下落不明的 SELECT a.ItemNumber, a.BOQty, a.TtlBO$, MIN(po.PBDUE) AS PODueDate FROM db

在SQLServer2012中,我尝试从两个表中提取数据。我正在丢失从BO表到ItemNumber上的PO表的联接的记录。我如何解决这个问题?BO表查询最初提取309行,完整查询提取280行。我知道有些项目在PO表中不存在,但在BO表中确实存在,但我仍然需要查看最终结果中的项目,这样我就可以说它们是下落不明的

SELECT
    a.ItemNumber,
    a.BOQty,
    a.TtlBO$,
    MIN(po.PBDUE) AS PODueDate
FROM
    dbo.PO po
    RIGHT JOIN
(SELECT
    bo.ItemNumber,
    SUM(bo.BOQty) AS BOQty,
    SUM(bo.ExtPrice) AS TtlBO$
FROM
    dbo.BO bo
GROUP BY
    bo.ItemNumber
)a
ON a.ItemNumber = po.PBITEM
WHERE po.PBTYPE <> 'R'
  AND po.PASTAT <> 'X'
GROUP BY
    a.ItemNumber,
    a.BOQty,
    a.TtlBO$
ORDER BY
    ItemNumber

以下是我如何获得所需的:

SELECT
        a.ItemNumber,
        a.BOQty,
        a.TtlBO$,
        MIN(po.PBDUE) AS PODueDate
    FROM
        dbo.PO po
        RIGHT JOIN
    (SELECT
        bo.ItemNumber,
        SUM(bo.BOQty) AS BOQty,
        SUM(bo.ExtPrice) AS TtlBO$
    FROM
        dbo.BO bo
    GROUP BY
        bo.ItemNumber
    )a
    ON a.ItemNumber = po.PBITEM AND po.PBTYPE <> 'R' AND po.PASTAT <> 'X'
      OR po.PBITEM IS NULL
    GROUP BY
        a.ItemNumber,
        a.BOQty,
        a.TtlBO$
    ORDER BY
        ItemNumber

例如,您需要为null添加条件,或者po.pbtype为null,我认为它不是po.pbtype。我想应该是po.pbitem为null,但这仍然不能捕获我丢失的所有项目;如果没有匹配项,PO中的所有列都将为空