2013-09-23 69 views
0

添加行號我在輸入如下表:利用窗口函數

FootnoteField    FootnoteText 
Field1      blabla 
Field2      blabla 
Field3      blabla 
Field4      zzzzzzzzzz 
Field5      blablabla 
Field6      ploof 

我怎麼能添加一個遞增整數列,指派爲行,其中FootnoteText是相同相同的整數?這是我所期待達到的位置:

 
FootnoteField     FootnoteText  Number 
Field1       blabla    1 
Field2       blabla    1 
Field3       blabla    1 
Field4       zzzzzzzzzz   2 
Field5       blablabla   3 
Field6       ploof    4 
+0

什麼版本的SQL Server? –

+0

你是否需要FootnoteField訂購的這個號碼? –

回答

1

如果你不這樣做需要您通過FootnoteField訂購的數據,您可以與GoatCo一起回答。

但是,如果你這樣做,那麼:

with cte as (
    select 
     FootnoteText, FootnoteField, 
     min([FootnoteField]) over(partition by FootnoteText) as min_FootnoteText 
    from Table1 
) 
select 
    FootnoteText, FootnoteField, 
    dense_rank() over(order by min_FootnoteText) 
from cte 

sql fiddle demo

+1

這將適用於SQL 2005轉發。 –

+0

@GoatCO該死的,謝謝,想想最近積累的總額以及它如何在SQL Server 2008中無法正常工作:( –

+0

我使用的是MSQL 2008,我確認它的功能就像一個魅力 – Jerome

1

你可能想DENSE_RANK()

SELECT *, DENSE_RANK() OVER(ORDER BY FootnoteText) 
FROM YourTable 

你只需要PARTITION BY如果你想編號重新開始在某些組中的每個值,即對每一天我要在編號0開始,所以PARTITION BY Some_Date

演示:SQL Fiddle

+0

這不起作用,應該由FootnoteField訂購 –

+1

你錯了。 –

+0

請用它創建sqlfiddle演示:) –