日期:2014-05-18  浏览次数:20441 次

求助 sql
小弟菜鸟一个 现在碰到一个问题 求在坐的大虾帮忙解决哈 有一张表 例如
A B  
0001 null
0001
0001
0001
0002
0002
0002
0003
0003
想实现这样功能 把B 字段的值 改成
A B
0001 000101
0001 000102
0001 000103
0001 000104
0002 000201
0002 000202
0002 000203
0003 000301
0003 000302

先谢谢

------解决方案--------------------
SQL code
DECLARE @i INT,@A VARCHAR(10)
SET @i=100

UPDATE tableName
SET B=CASE WHEN A=@A THEN A+RIGHT(@i+1,2) ELSE A+'01' END,@i=CASE WHEN  A=@A  THEN @i+1 ELSE 1 END,@A=A

------解决方案--------------------
SQL code

go
if OBJECT_ID('tbl')is not null
drop table tbl
go
create table tbl(
[Message] int,
ServiceRequestId int
)
go
insert tbl
select 3905,170757 union all
select 3905,173116 union all
select 4221,173123 union all
select 4221,173127 union all
select 4221,173132

-- 查询处理

--随便选取了你的结果中的两条数据:
/*
Message    ServiceRequestId
3905    170757,173116
4221    173123,173127,173132
*/

--> 测试数据:[tblA]
if object_id('[tbl]') is not null drop table [tbl]
create table [tbl](A varchar(4),B VARCHAR(10))
insert [tbl]
select '0001',null union all
select '0001',null union all
select '0001',null union all
select '0001',null union all
select '0002',null union all
select '0002',null union all
select '0002',null union all
select '0003',null union all
select '0003',null

;with t
as(
select ROW_NUMBER()over(PARTITION by A order by getdate()) as id,
* from tbl
)
UPDATE tbl
SET B=T.A+RIGHT('00'+LTRIM(ID),2) FROM T WHERE T.A=tbl.A