2

我有一张带有客户 ID 的表格。我需要将它们与从文本文件加载的响应 ID 相关联。我将外部文件批量加载到临时表中,但我不知道如何将它们与客户 ID 相关联。

我从这两个表开始:

接受者

+------+------------+------------+
|  id  | CustomerId | ResponseId |
+------+------------+------------+
|   1  |       1001 |    NULL    |
|  19  |       2367 |    NULL    |
|  47  |        964 |    NULL    |
| 105  |       1811 |    NULL    |
+------+------------+------------+

#响应

+--------+
|   id   |
+--------+
| ABCDEF |
| GHIJKL |
| MNOPQR |
| STUVWX |
+--------+

我希望得到类似以下的东西:

接受者

+------+------------+------------+
|  id  | CustomerId | ResponseId |
+------+------------+------------+
|   1  |       1001 |   ABCDEF   |
|  19  |       2367 |   STUVWX   |
|  47  |        964 |   MNOPQR   |
| 105  |       1811 |   GHIJKL   |
+------+------------+------------+

CustomerId和之间的匹配顺序ResponseId并不重要(我已经以不同的排序顺序显示它们到#Responses表中),只要每个 id from#Responses与 one 相关联CustomerId

#Responses表将保证至少具有与该Recipient表一样多的行。

万一这很重要,我使用的是 SQL Server 2005

4

1 回答 1

2

在这种情况下,您可以在两个地方使用 row_number() 并进行连接

;WITH Cust AS
(
 SELECT row_number() over(order by (select 1)) rn,* FROM Customer
),Resp AS
(
  SELECT row_number() over(order by (select 1)) rn,* FROM #Responses
)
SELECT C.id,c.CustomerID,C.ResponseId 
FROM Cust C 
JOIN Resp R 
ON C.rn = R.rn
于 2013-06-28T09:22:29.710 回答