2014-03-27 36 views
1

試圖編寫一些執行以下操作的SQL。根據分組的UserId創建唯一ID

如果我有一個用戶標識字段12345,並且該用戶有10條記錄,則我想創建一個字段,該字段爲1234xxxx ,其中xxxx表示基於日期字段的這些記錄的順序,1 - 10

如此12340001,12340002,12340003等,高達12340010

的思考?

+0

當用戶得到他們的第10000記錄,會發生什麼? – mellamokb

+0

我會處理,我只是尋找骨架代碼,以開始。 – Matt

+0

該字段的類型是什麼? –

回答

3

下面是獲得新值,假設userid的方法是一個字符串

select (left(userid, 4)+right(100000 + 
           row_number() over (partition by userid order by datefield), 4) 
     ) 

您也可以在update聲明,如果你想改變在表中的值使用。

0
Declare @x Table (Id INT) 

INSERT INTO @x (ID) VALUES (1001),(1002),(1003),(1004),(1005) 
select * from @x 

select (
left(ID, 4)+right(10000 +DENSE_RANK() over (order by Id), 4) 
     ) 
     from @x 

我們還可以使用密集等級,從而獲得所需的輸出