簡體   English   中英

SQL SELECT值從一個表中的列按順序(一個接一個)到另一個表中的列

[英]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.

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