INSERT INTO文で対象テーブルに挿入するレコード数を維持するために:INTOステートメント上記のINSERTでSQL:私はこのようなクエリ持ってどのように
declare @guidd nvarchar(10)
set @guidd = '11233'
create table rrr_temp(value nvarchar(10), value2 int)
create table rrr_tempA(valueA nvarchar(10), guidd nvarchar(10), ranks int)
insert into rrr_temp values('AAA', 200)
insert into rrr_temp values ('BBB', 400)
insert into rrr_temp values ('CCC', 300)
INSERT INTO rrr_tempA(valueA , guidd , ranks)
SELECT RT.value, @guidd , row_number() over (order by (select NULL))
FROM rrr_temp(nolock) RT
INNER JOIN
(SELECT value, min(value2) AS lastLeg
FROM rrr_temp(nolock) RTL
GROUP BY value) GrpRoute
ON RT.value = GrpRoute.value
ORDER BY value2
select * from rrr_tempA
を、私は、ソースの唯一のレコード番号を挿入することができていますrow_number()over(order by(select NULL))を使用して、ターゲット表の 'rank'列の表(rrr_temp)を作成します。しかし、私はターゲットテーブルが挿入されたときに番号を増分したい。 IDENTITYは使用できません。ありがとう。
ここで何をしようとしているのか分かりません。なぜアイデンティティを使用できないのですか? NOLOCKヒントのポイントは何ですか?テーブルをロックすることはできません。クエリを作成する直前にテーブルを作成することができます。ヒントを使用する場合は、WITHキーワードを含める必要があります。省略すると、非推奨になります。また、一時テーブルのように動作する永続テーブルではなく、一時テーブルを使用しないでください。このヒントをどこにでも吹きつけ続ける前に、この記事を見てみてください。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –
アイデンティティを使用したくない場合は、現在の最大キー値を取得したサブクエリを選択してからインクリメントすることができますそれ。 – Cato
上記のクエリを使用すると、ターゲットテーブルのデータは、( 'AAA'、200、1)、( 'CCC'、300,3)となります。 、( 'BBB'、400,2)。しかし、私の予想される出力は、:('AAA'、200、1)、( 'CCC'、300,2)、( 'BBB'、400,3)です。それが明快になることを願っています。ランク列は1,3,2を表示しています...しかし、1,2,3のようにしたいです。 – user1587872