【发布时间】:2017-04-08 02:31:33
【问题描述】:
我想知道是否有人可以帮助我。我正在尝试在两个表上进行连接并返回一个 id 如果有一个 id 但如果没有 id 返回 null 但仍返回该产品的行而不忽略它。我下面的查询返回的记录数量是我无法弄清楚原因的两倍。
SELECT
T2.ProductID, FirstChild.SupplierID, SecondChild.AccountID
FROM
Products T2
LEFT OUTER JOIN
(
SELECT TOP(1) SupplierID, Reference,CompanyID, Row_Number() OVER (Partition By SupplierID Order By SupplierID) AS RowNo FROM Suppliers
)
FirstChild ON T2.SupplierReference = FirstChild.Reference AND RowNo = 1AND FirstChild.CompanyID =T2.CompanyID
LEFT OUTER JOIN
(
SELECT TOP(1) AccountID, SageKey,CompanyID, Row_Number() OVER (Partition By AccountID Order By AccountID) AS RowNo2 FROM Accounts
)
SecondChild ON T2.ProductAccountReference = SecondChild.Reference AND RowNo2 = 1 AND SecondChild.CompanyID =T2.CompanyID
我正在尝试做的示例
ProductID SupplierID AccountID
1 5 2
2 6 NULL
3 NULL NULL
【问题讨论】:
-
我认为样本数据和期望的结果确实有助于解释您想要做什么。
-
我更新了问题以显示我想要得到的输出,希望它更有意义
-
SELECT DISTINCT 也许?
标签: sql sql-server select left-join