我有两个看起来像这样的表:
sMinMax:
PartNo baseID Min Max
11795 1 1 1
11795 5 0 0
11795 6 1 1
01655 65 2 3
vsStock:
PartNo baseID Qty
11795 1 1
11795 1 1
11795 55 1
我想加入他们,所以我得到了一个表格,该表格将所有parNo碱基的所有列显示在一起,如下所示:
结果:
PartNo baseID Min Max Qty
11795 1 1 1 2
11795 5 0 0 null
11795 6 1 1 null
11795 55 null null 1
01655 65 2 3 null
因此,我只需要在两列上使用完全外部联接来执行此操作,但这将产生与左联接相同的结果。我尝试了1000件事,但这是我最后的尝试:
SELECT
a.sPart_ID
,a.uRALBase_ID
,a.MinQty
,a.MaxQty
,b.Qty
FROM [RALNHVTST].[dbo].[sMinMax] as a
FULL OUTER JOIN [RALNHVTST].[dbo].[vsStockList] as b
ON a.sPart_ID = b.sPart_ID
AND a.uRALBase_ID = b.uRALBase_ID
WHERE a.sPart_ID IS NOT NULL
AND a.sPart_ID = 1159
ORDER BY a.sPart_ID
但是正如我所说,这给了我与LEFT JOIN相同的结果。有人知道我在做什么错吗?
您可以尝试以下操作:
SELECT a.PartNo, a.baseID, MIN(a.MinQty) AS MinQty, MIN(a.MaxQty) AS MaxQty, SUM(b.Qty)
FROM sMinMax a INNER JOIN vsStock b ON a.PartNo = b.PartNo AND a.baseID = b.baseID
GROUP BY a.PartNo, a.baseID
UNION ALL
SELECT c.PartNo, c.baseID, NULL, NULL, c.Qty
FROM vsStock c
WHERE NOT EXISTS (
SELECT 1 FROM sMinMax d WHERE c.PartNo = d.PartNo AND c.baseID = d.baseID
)