2017-08-04 30 views
0

我是SQL新手。我正在尋找一個功能,我一直在環顧四周,但我無法找到我想要的。當新的不同字段顯示爲1並且向上計數時,從1開始查找Oracle函數計數

我執行此操作後,

我想表明,

V x 
    a 1 
    a 2 
    a 3 
    b 1 
    b 2 
    b 3 
    c 1 
    c 2 
    d 1 
    e 1 
    e 2 

select V, ____ over (order by V) as x from my-table 

我查ROW_NUMBER,等級,DENSE_RANK,但這些不工作,是否有不同的功能存在嗎?

+0

'over(... order by v)'在組(或分區)內不會在同一個「v」內做任何事情(當然:在這樣一個組或分區內,對於所有行,「v」是相同的!)如果ORDER BY是必需的,有時它的意圖會更清晰 - 如果寫成'order by null',結果相同。 – mathguy

回答

2
SELECT v, ROW_NUMBER() OVER (PARTITION BY v ORDER BY v) x 
    FROM my-table 

結果

V   X 
- ---------- 
a   1 
a   2 
a   3 
b   1 
b   2 
b   3 
c   1 
c   2 
d   1 
e   1 
e   2 
+0

正確。但是,請參閱關於'null by null'的註釋,我在OP的問題中添加了一條評論。 – mathguy

+0

正確。任何值都可以使用,因爲它什麼都不會做,語法需要通過它來排序。 –

-2

你可以使用 「ROW_NUMBER()OVER」 的功能,如下

選擇V,ROW_NUMBER()OVER(用V順序)爲x從我的表;

相關問題