我有一个临时表,它有两列:一列是Name,另一列是RecordNumber。它们如下所示:
Name RecordNumber Rownum
EMEA-1111-SCHD-1 0 1
EMEA-12362-SCHD-1 0 2
EMEA-12362-SCHD-1 0 3
EMEA-12362-SCHD-1 0 4
EMEA-12362-SCHD-1 0 5
EMEA-2191-SCHD-1 0 6
EMEA-2191-SCHD-1 0 7
EMEA-2191-SCHD-1 0 8
我需要更新列“RecordNumber”,增量编号从1开始。假设EMEA-1111-SCHD-1只有一条记录,所以RecordNumber应更新为1.对于EMEA-12362-SCHD-1四条记录,因此RecordNumber应相应更新为1,2,3,4。基本上,我需要得到一个结果:
Name RecordNumber Rownum
EMEA-1111-SCHD-1 1 1
EMEA-12362-SCHD-1 1 2
EMEA-12362-SCHD-1 2 3
EMEA-12362-SCHD-1 3 4
EMEA-12362-SCHD-1 4 5
EMEA-2191-SCHD-1 1 6
EMEA-2191-SCHD-1 2 7
EMEA-2191-SCHD-1 3 8
没有光标可以做到吗? 谢谢你,艾德。 我添加了标识col rownum以使此记录唯一。有没有想过如何更新结果以按组记录号码?
答案 0 :(得分:1)
只能在具有分析功能的Sybase IQ中执行此查询。
这次我无法访问sybase IQ,所以我无法检查查询,但我认为正确的查询类似于
select name,
row_number() over (partition by name) as RecordNumber
from Table
AFAIK Sybase ASE没有此功能。
<强>更新强>
我认为您可以像这样创建自联接查询
select t1.name,
t1.Rownum - t2.MinRowNum + 1
from Table as t1,
(select name, min (Rownum) as MinRowNum from Table group by name) as t2
where t1.name = t2.name
order by t1.name, t1.Rownum