[英]Merge or join two tables SQL Server
我有一個包含兩列Item
和Qty
的表,另一個包含Product
和Quantity
的表。
表A
物品 | 數量 |
---|---|
一種 | 10 |
一種 | 15 |
一種 | 5個 |
b | 10 |
表b
產品 | 數量 |
---|---|
一種 | 10 |
一種 | 20 |
b | 5個 |
b | 5個 |
我要找的output是這個:
物品 | 數量 | 產品 | 數量 |
---|---|---|---|
一種 | 10 | 一種 | 10 |
一種 | 15 | 一種 | 20 |
一種 | 5個 | NULL | NULL |
b | 10 | b | 5個 |
NULL | NULL | b | 5個 |
您將需要某種順序來保證一致的結果。 為了模擬這一點,我添加了 IDENTITY 列
DROP TABLE IF EXISTS #Table1
DROP TABLE IF EXISTS #Table2
CREATE TABLE #Table1 (ID INT IDENTITY(1,1),Item CHAR(1),Qty INT)
CREATE TABLE #Table2 (ID INT IDENTITY(1,1),Product CHAR(1),Qty INT)
INSERT INTO #Table1
VALUES ('a',10)
,('a',15)
,('a',5)
,('b',10)
INSERT INTO #Table2
VALUES ('a',10)
,('a',20)
,('b',5)
,('b',5)
;WITH cte_Table1 AS (
SELECT *,RankNum = ROW_NUMBER() OVER (PARTITION BY Item ORDER BY ID)
FROM #Table1
),
cte_Table2 AS (
SELECT *,RankNum = ROW_NUMBER() OVER (PARTITION BY Product ORDER BY ID)
FROM #Table2
)
SELECT *
FROM cte_Table1 AS A
FULL JOIN cte_Table2 AS B
ON A.Item = B.Product
AND A.RankNum = B.RankNum
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.