我有一张表(customerselection),其中列出了客户编号和促销代码:
CustomerNumber | Promo
12345 | ABCDEF
54321 | BCDEFG
22334 | BCDEFG
54678 | BCDEFG
23454 | ABCDEF
另一个表(证书)列出了证书、促销和客户编号,但客户编号最初为 NULL:
Certificate | Promo | CustomerNumber
1111111111 | ABCDEF | NULL
2222222222 | BCDEFG | NULL
3333333333 | BCDEFG | NULL
4444444444 | ABCDEF | NULL
我需要做的是将第二个表中的每个证书唯一地分配给第一个表中的客户。促销需要匹配。使用匹配促销的第一个客户编号更新第二个表,仅更新到一个记录。
我过去使用 VB 程序完成了此操作 - 循环第一个表中的记录,更新第二个表中匹配促销的第一个免费记录。但是该程序运行时间太长(通常有大约 600,000 条记录)。
有没有办法在 SQL 中做到这一点?用一个非常复杂(甚至非常简单)的 SQL 查询来完成任务?(或 SQL Server 功能?)
更新每个促销都有许多证书。每个促销活动都有很多客户。
但是每个客户只能分配一个证书。
更新 2 让我们调用第一个表customerselection和第二个表证书。
customerelection是我们要为其分配证书的客户的选择。
证书是可以分配的证书池。