我有一张包含客户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 |
+------+------------+------------+
CustomerId
和ResponseId
之间的匹配顺序并不重要(我已经以#Responses
表的不同排序顺序显示它们),只要来自{{1}的每个ID }与一个#Responses
相关联。
CustomerId
表将保证至少具有与#Responses
表一样多的行。
如果重要,我正在使用SQL Server 2005
答案 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