每次更新值从1开始的SQL更新记录
我正在使用单个插入语句将批记录添加到表中。我希望为每个新批次分配递增数字,但每次都从1开始。每次更新值从1开始的SQL更新记录
所以,如果我有
Batch Name IncementingValue
1 Joe 1
1 Pete 2
1 Andy 3
2 Sue 1
2 Mike 2
2 Steve 3
,我再添加两个记录(使用单个插入语句):
3 Dave
3 Paul
我怎么能对这个表运行更新语句,以便戴夫将被设置为1,保罗将被设置为2.我不想使用游标。
排名功能ROW_NUMBER
应该做你需要的。你没有提到关于序列号应该如何分配的任何具体的规则,所以我使用的名字在这里完成它:
INSERT targetTable(Batch,Name,IncementingValue)
SELECT BatchId,
Name,
ROW_NUMBER() OVER (ORDER BY Name)
FROM sourceTable
非常感谢。 – DEH 2010-09-09 09:45:30
@Ed - 你知道我是否可以通过update语句应用这些值,例如: 更新从SegmentationKeysUnconstrained SegmentationKeysUnconstrained 组batchrownumber = ROW_NUMBER()以上(由trackingtokenid顺序) 其中batchid = '58D73880-31B1-40AF-A749-7F6EBEAAF3E4' – DEH 2010-09-09 14:36:51
我的问题是,我需要分配一组ROW_NUMBER的( )值在几个插入语句,所以我实际上不能在插入点使用row_number - 我必须做几次插入完成后。 – DEH 2010-09-09 14:39:00
我需要完成的日期和数字格式类似的东西。
希望有人会发现这个例子有用。
update TEST_TABLE
set ref = reference
from (
select
*,
(CONVERT(VARCHAR(10),GETDATE(),12) + RIGHT('0000' + CAST(ROW_NUMBER() OVER (ORDER BY id) AS VARCHAR(4)), 4)) as reference
from TEST_TABLE
WHERE
test_table.id > 4
and
test_table.id < 8
) TEST_TABLE
您打算使用哪种RDBMS? – 2010-09-09 09:22:24
我正在使用MS SQL 2005 – DEH 2010-09-09 09:33:05