22,300
社区成员




create table tb(类别 char(2))
insert into tb(类别)
select 'a' union all
select 'a' union all
select 'b' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c'
select 类别,'000'+
cast(row_number() over(partition by 类别 order by getdate()) as varchar) '排序'
from tb
类别 排序
---- ---------------------------------
a 0001
a 0002
b 0001
b 0002
b 0003
c 0001
c 0002
(7 row(s) affected)
--tb中有一个字段
--类别
--a
--a
--b
--b
--b
--c
--c
--现在想加个字段形成如下内容
--类别 排序
--a 0001
--a 0002
--b 0001
--b 0002
--b 0003
--c 0001
--c 0002
--请问我该怎么弄,直接在企业管理器设计字段能实现最好
declare @tb table (类别 varchar(5))
insert into @tb values( 'a'),('a'),('b'),('b'),('b'),('c'),('c')
select *,'000'+ cast (ROW_NUMBER()over(partition by 类别 order by getdate()) as varchar(50))as 排序 from @tb
类别 排序
----- -----------------------------------------------------
a 0001
a 0002
b 0001
b 0002
b 0003
c 0001
c 0002
(7 行受影响)
declare @tab table
(
V nvarchar(2)
)
insert into @tab(v)
select 'a' union all
select 'a' union all
select 'b' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c'
select V,right('0000'+convert(nvarchar(4),row_number() over(partition by V order by V)),4) from @tab
a 0001
a 0002
b 0001
b 0002
b 0003
c 0001
c 0002
create table tab
(
V nvarchar(2)
)
insert into tab(v)
select 'a' union all
select 'a' union all
select 'b' union all
select 'b' union all
select 'b' union all
select 'c' union all
select 'c'
alter table tab add sort_rownum varchar(32)
update tab set tab.sort_rownum=b.sort_rownum from (select *,row_number() over(order by v )as rn from tab) tab ,
(select V,row_number() over(order by v )as rn,right('0000'+convert(nvarchar(4),row_number() over(partition by V order by V)),4)as sort_rownum from tab)as b
where tab.V =b.V and tab.rn=b.rn
/*
V sort_rownum
a 0001
a 0002
b 0001
b 0002
b 0003
c 0001
c 0002
*/