尝试编写一些执行以下操作的SQL。
如果我有一个用户ID字段,12345,并且该用户有10条记录,我想创建一个1234xxxx的字段 其中xxxx指的是那些记录的顺序,基于日期字段,1 - 10
so 12340001,12340002,12340003等,最高12340010
思想?
答案 0 :(得分:3)
这是一种获取新值的方法,假设userid
是一个字符串
select (left(userid, 4)+right(100000 +
row_number() over (partition by userid order by datefield), 4)
)
如果要更改表格中的值,也可以在update
语句中使用它。
答案 1 :(得分: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
我们也可以使用密集等级来获得所需的输出