2014-04-09 51 views
1

我有一個表的地址和日期,我需要每個具有相同地址和日期的記錄的唯一ID。這裏是什麼,我需要它看起來像:如何在SQL Server中爲類似記錄生成相同的組ID

 Address  | Date | Group_id 
    -------------------------------------- 
    12 address  1-1-2014  1 
    14 address  1-2-2014  2 
    14 address  1-2-2014  2 
    14 address  1-2-2014  2 
    12 address  1-3-2014  3 
    12 address  1-3-2014  3 
    13 address  1-4-2014  4 
    13 address  1-4-2014  4 

問題是ROW_NUMBER()OVER(按地址分區,日期)給出了這樣的結果:

 Address  | Date | Group_id 
    -------------------------------------- 
    12 address  1-1-2014  1 
    14 address  1-2-2014  1 
    14 address  1-2-2014  2 
    14 address  1-2-2014  3 
    12 address  1-3-2014  1 
    12 address  1-3-2014  2 
    13 address  1-4-2014  1 
    13 address  1-4-2014  2 

此外,DENSE_RANK()返回全1爲集團ID

想法?

+0

你能後的樣品預計結果的數據?目前還不清楚您希望組ID返回的值。 –

+0

第一張桌子是我想要的。請注意,只有當地址和日期相同時,這些ID纔是唯一的。 – Min

回答

5

而不是ROW_NUMBER可以使用Dense_Rank

試試這個

SELECT Address,Date,Dense_Rank() OVER(Order by Address, Date) 
FROM Table1 
+0

我忘了提及我也試過這個。結果全都是1的組ID。我在這個問題上提出瞭解決未來混亂的問題。謝謝。 – Min

+0

@Min,你爲什麼認爲這個查詢不符合你的要求? –

+0

當我使用Dense_Rank並按地址和日期分區時,結果全部爲1,而不是每個類似記錄的唯一ID。 – Min

0

試試這個

declare @table table(address varchar(100), datecol datetime) 
insert into @table 
select '12 address','1-1-2014' union all 
select '14 address','1-2-2014' union all 
select '14 address','1-2-2014' union all 
select '14 address','1-2-2014' union all 
select '12 address','1-3-2014' union all 
select '12 address','1-3-2014' union all 
select '13 address','1-4-2014' union all 
select '13 address','1-4-2014' 


SELECT Address,Datecol,Dense_Rank() OVER(Order by Datecol, Address) Group_ID 
FROM @table 
相關問題