使用来自其他 table 的数据丰富 table

Enrich table with data from other table

目前我有 2 个表:一个包含客户数据 (CLIENT_TABLE),另一个包含礼品卡信息 (GIFTCARD_TABLE)。

GIFTCARD_TABLE 包含 100 行,它有 2 列:Card_Number 和 Pin_Code。

现在我需要使用 GIFTCARD_TABLE 中的 2 列来丰富 CLIENT_TABLE(35 行),因此每个客户都需要一个 card_number 及其对应的 pin_code哪个并不重要(只是不要使用相同的卡号 & pin_code 两次)。

因为这些表没有任何我可以使用的键,我不知道我该怎么做。

有什么解决办法的建议吗?

亲切的问候

示意图(我在 Teradata 语法中可能不正确):

UPDATE 
-- this table copy will be updated
     CLIENT_TABLE c1  
-- this CTE enumerates clients, join enumerates rows in 1st copy
JOIN ( SELECT id, ROW_NUMBER() OVER (ORDER BY id) rn
       FROM CLIENT_TABLE ) c2 ON c1.id = c2.id
-- this CTE enumerates cards, join assigns card to client one-to-one by the `rn` number
JOIN ( SELECT *, ROW_NUMBER() OVER (ORDER BY Card_Number) rn
       FROM GIFTCARD_TABLE ) g ON c2.rn = g.rn
SET c1.Card_Number = g.Card_Number,
    c1.Pin_Code = g.Pin_Code;

如果您想真正随机分配卡片,您需要:

select *
from
 (  -- random row_numbers
    select dt.*, 
       row_number() over (order by rnd) as rn
    from
     ( -- 35 random clients
       select t.*, random(1,1000000000) as rnd
       from CLIENT_TABLE as t
       sample randomized allocation 35
     ) as dt
 ) as client
join
 (  -- random row_numbers
    select dt.*, 
       row_number() over (order by rnd) as rn
    from
     ( 
       select t.*, random(1,1000000000) as rnd
       from GIFTCARD_TABLE as t
     ) as dt
 ) as card
on client.rn = card.rn

RANDOM不能直接用在ROW_NUMBER.