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