Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
MarkFi
Starting Member
1 Post |
Posted - 2011-10-27 : 13:12:35
|
/* Basically I the RestofData cannot be used to join or matched on. @OriginalTable and @NewTable are for this demo only. They are actual real tables not declared*/Declare @OriginalTable table(OT_ID int identity (1,1), Rec_ID nvarchar(8), RestofData nvarchar(20))insert into @OriginalTable(Rec_ID,RestofData) (Select 'L1000001','aaaaaaaaaaaaaaaa')insert into @OriginalTable(Rec_ID,RestofData) (Select 'L1000002','bbbbbbbbbbbbbbb')insert into @OriginalTable(Rec_ID,RestofData) (Select 'L1000003','cccccccccccccccc')insert into @OriginalTable(Rec_ID,RestofData) (Select 'L1000004','ddddddddddddddd')insert into @OriginalTable(Rec_ID,RestofData) (Select 'L1000005','eeeeeeeeeeeeeee')Declare @NewTable table(NT_ID int identity (1,1), Rec_ID nvarchar(8), RestofData nvarchar(20))insert into @NewTable(Rec_ID,RestofData) (Select Null,'xoxoxoxoddddsdser')insert into @NewTable(Rec_ID,RestofData) (Select Null,'vhgfjghgjh')insert into @NewTable(Rec_ID,RestofData) (Select Null,'gfngngn')insert into @NewTable(Rec_ID,RestofData) (Select Null,',nmbvnvcbdfthhrtrt5437686')insert into @NewTable(Rec_ID,RestofData) (Select Null,'rtorhrepotrtpr')------Select * From @OriginalTable------Select * From @NewTable Declare @Lapse_ID_Hold nvarchar(8) Declare @Lapse_ID_Number int Declare @MaxRec int Declare @ThisRec int Set @Lapse_ID_Number = (Select Right(Max(Rec_ID),7) from @OriginalTable) Set @Lapse_ID_Number = (Select @Lapse_ID_Number + 1) Set @Lapse_ID_Hold = (Select 'L' + convert(nvarchar(7), @Lapse_ID_Number ))--- Select @Lapse_ID_Hold,@Lapse_ID_Number Set @MaxRec = (Select Max(ot_ID) From @OriginalTable) Set @ThisRec = 1 While @ThisRec <= @MaxRec Begin Update @NewTable Set Rec_ID = @Lapse_ID_Hold where NT_ID = @ThisRec -- and Rec_ID is Null /* Increase Lapse ID number when there is an updated record*/ Set @Lapse_ID_Number = @Lapse_ID_Number + 1 Set @Lapse_ID_Hold = (Select 'L' + convert(nvarchar(7),@Lapse_ID_Number )) /* Run thru the table*/ Set @ThisRec = @ThisRec + 1 EndSelect * From @OriginalTableSelect * From @NewTable/*This will run thru a large number of records and runs slow. Can you show me how to create this code in set based Thank you Mark@10wp.com*/ |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2011-10-27 : 13:19:57
|
just do an update like below and check....update tset t.Rec_ID='L'+ cast(t.Rn + (select max(replace(Rec_ID,'L','')) FROM @OriginalTable)as varchar(25))from(select row_Number() over (order by NT_ID) AS rn,Rec_IDfrom @NewTable)tSelect * From @OriginalTableSelect * From @NewTable ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
X002548
Not Just a Number
15586 Posts |
|
|
|
|
|
|
|