2011-02-16 41 views
1

我有一個臨時表,它有兩列:一個是Name和另一個RecordNumber。他們看起來象下面這樣:如何在Sybase中使用增量編號更新一個字段的組記錄?

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 

是否可以做到沒有光標? 謝謝你,Ed。 我加入了身份證號rownum,使這個記錄是唯一的。有什麼想法如何更新結果有記錄編號?

+0

你怎麼知道(在A組)應是記錄#1,#2等?是否有另一個領域需要排序? – 2011-02-16 19:23:09

回答

1

只能在具有分析功能的Sybase IQ中執行此查詢。

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc38151.1510/html/iqrefbb/BCGEEBHA.htm

我have't這次訪問Sybase IQ,所以我無法檢查查詢,但我想正確的查詢是一樣的東西

select name, 
row_number() over (partition by name) as RecordNumber 
from Table 

AFAIK Sybase ASE的has't此功能。

更新

我想你可以創建自加入這樣的查詢

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 
相關問題