将客户ID插入不相关的表中

时间:2013-06-28 09:04:08

标签: sql sql-server sql-server-2005 insert

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

我从这两个表开始:

收件人

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

#Responses

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

我希望得到以下内容:

收件人

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

CustomerIdResponseId之间的匹配顺序并不重要(我已经以#Responses表的不同排序顺序显示它们),只要来自{{1}的每个ID }与一个#Responses相关联。

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

如果重要,我正在使用SQL Server 2005

1 个答案:

答案 0 :(得分: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