簡體   English   中英

合並或加入兩個表 SQL 服務器

[英]Merge or join two tables SQL Server

我有一個包含兩列ItemQty的表,另一個包含ProductQuantity的表。

表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 列

根據 ROW_NUMBER() 將產品與訂單中的項目匹配

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM