2

顧客IDを持つテーブルがあります。それらをテキスト ファイルからロードされた応答 ID に関連付ける必要があります。外部ファイルを一時テーブルに一括ロードしていますが、それらを顧客 ID に関連付ける方法がわかりません。

次の 2 つのテーブルから始めます。

受信者

+------+------------+------------+
|  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   |
+------+------------+------------+

からの各 idが 1 に関連付けられている限り、CustomerIdとの間の一致順序ResponseIdは重要ではありません (テーブルとは異なる並べ替え順序で示しました) 。#Responses#ResponsesCustomerId

テーブルには、#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 に答える