[英]SQL SELECT Values from column in one table to a column in another table in order (one by one)
我有兩張桌子:一張是客戶,一張是促銷代碼。 我需要將促銷代碼分配給客戶(1 個代碼分配給 1 個客戶),按順序獲取促銷代碼並一一分配給客戶。
客戶ID | 名 |
---|---|
123455 | 約翰 |
123456 | 瑪麗 |
123457 | 簡 |
123458 | 鮑勃 |
促銷代碼 |
---|
ABC12345 |
YTR23GBS |
YGNCK453 |
12GHRS7G |
這是我需要的結果:
客戶ID | 名 | 促銷代碼 |
---|---|---|
123455 | 約翰 | ABC12345 |
123456 | 瑪麗 | YTR23GBS |
123457 | 簡 | YGNCK453 |
123458 | 鮑勃 | 12GHRS7G |
太感謝了!
如果您的 RDBMS 支持窗口函數,您可以使用派生表或 CTE 為每個集合分配一個代理鍵並使用它來連接:
select CustomerId, Firstname, PromoCode
from (
select *, Row_Number() over(order by customerId) seq
from Customers
) c join (
select *, Row_Number() over(order by promocode) seq
from PromoCodes
) p on c.seq = p.seq;
您必須確定您想要客戶和促銷代碼的順序。 然后你可以使用 ROW_NUMBER 來分配一個與訂單對應的 Id。 然后,您可以使用內部聯接來組合這兩個表。
WITH OrderedCustomers AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY CustomerId) AS [Order#]
FROM Customers
), OrderedPromoCodes AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY Promocode) AS [Order#]
FROM Promocodes
)
SELECT *
FROM OrderedCustomers
INNER JOIN OrderdPromoCodes b
ON a.[Order#] = b.[Order#]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.