2016-08-10 6 views
0

各番号のシリアル番号を生成して別のテーブルに挿入するにはどうしたらいいですか?テーブル番号BはテーブルBに基づいて生成されます(テーブルBの - MAX()+ 1)。 MS SQL 2012各外部キーのシリアル番号を生成して別のテーブルに挿入する方法は?

Table A 

packname       refno 
----------------------------------- ----------- 
Demo 250 Channels     1 
qqq         1 
qqq         3 
qqq         3 
Demo 250 Channels     1 
Demo 250 Channels     1 

Result I want 
Table B 

packname       refno  InvoiceNo 
----------------------------------- -------------------- 
Demo 250 Channels     1    1 
qqq         1    2 
qqq         1    3 
qqq         3    1 
Demo 250 Channels     3    2 
Demo 250 Channels     5    1 
+0

あなたは 'row_number()over(packnameによるrefno order by packname)'が必要なようですが、前と後の関係を理解できませんでした。 – artm

+0

私のテーブルAは取引テーブルであり、週末に私の各顧客(refno)の統合トランザクションを生成し、請求書テーブルBを生成して、 –

答えて

1

私はあなたが必要だと思う:

SELECT packname, refno, 
    ROW_NUMBER() OVER (PARTITION BY refno ORDER BY (SELECT 1)) InvoiceNo 
FROM Table1 

あなたがいずれかの列に(SELECT 1)を変更することができます。さもなければ、同じグループの結果をランダムに配置することができます。

+0

ありがとう、Pawel Dyl。このプロセスは毎日実行され、いくつかのレコードをフェッチしてTable2に挿入するので、最初にtable2に挿入したときにはOKですが、2回目に実行すると重複した番号が生成されます。 –

関連する問題