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 |
|
NguyenL71
Posting Yak Master
228 Posts |
Posted - 2011-02-11 : 17:26:19
|
| [code]IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Test]') AND type in (N'U'))DROP TABLE [dbo].[Test]GOCREATE TABLE [dbo].[Test]( [CustomerCode] [char](3) NOT NULL) ON [PRIMARY]GOGive the table below. How can I obtain the new values below.Thanks so much. -- DELETE Test; INSERT Test (CustomerCode) VALUES ('ABC'), ('DEF'), ('GHI'); GO SELECT * FROM Test; go--Result want:NewCustomerCode ---------------ABC001ABC002ABC003ABC004ABC005DEF001DEF002DEF003GHI001GHI002GHI003GHI004[/code] |
|
|
dataguru1971
Master Smack Fu Yak Hacker
1464 Posts |
Posted - 2011-02-11 : 17:40:05
|
[code] DECLARE @Test TABLE( [CustomerCode] [char](3) NOT NULL) INSERT INTO @Test (CustomerCode) SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'GHI' UNION ALLSELECT 'GHI' UNION ALLSELECT 'GHI' SELECT * FROM @test;WITH cteTEST AS (SELECT CustomerCode, ROWNUM = Row_Number() OVER( ORDER BY CustomerCode) FROM @Test )SELECT CustomerCode + RIGHT(REPLICATE('0',3) + CAST(ROWNUM as varchar(3)),3)FROM cteTEST [/code] Poor planning on your part does not constitute an emergency on my part. |
 |
|
|
NguyenL71
Posting Yak Master
228 Posts |
Posted - 2011-02-11 : 17:48:41
|
[code]When I ran your query, I got the results below but not quite what I expecting. Thanks.------ABC001ABC002ABC003ABC004ABC005ABC006DEF007 --> should be DEF001DEF008 DEF002 DEF009 DEF003DEF010 DEF004GHI011 GHI001GHI012 GHI002GHI013 GHI003[/code]quote: Originally posted by dataguru1971 [code] DECLARE @Test TABLE( [CustomerCode] [char](3) NOT NULL) INSERT INTO @Test (CustomerCode) SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'GHI' UNION ALLSELECT 'GHI' UNION ALLSELECT 'GHI' SELECT * FROM @test;WITH cteTEST AS (SELECT CustomerCode, ROWNUM = Row_Number() OVER( ORDER BY CustomerCode) FROM @Test )SELECT CustomerCode + RIGHT(REPLICATE('0',3) + CAST(ROWNUM as varchar(3)),3)FROM cteTEST [/code] Poor planning on your part does not constitute an emergency on my part.
|
 |
|
|
dataguru1971
Master Smack Fu Yak Hacker
1464 Posts |
Posted - 2011-02-11 : 18:01:35
|
Sorry about that! You have add the PARTITION BY clause ..misread the original request. DECLARE @Test TABLE( [CustomerCode] [char](3) NOT NULL) INSERT INTO @Test (CustomerCode) SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'GHI' UNION ALLSELECT 'GHI' UNION ALLSELECT 'GHI' SELECT * FROM @test;WITH cteTEST AS (SELECT CustomerCode, ROWNUM = Row_Number() OVER( PARTITION BY CustomerCode ORDER BY CustomerCode) FROM @Test )SELECT CustomerCode + RIGHT(REPLICATE('0',3) + CAST(ROWNUM as varchar(3)),3)FROM cteTEST Poor planning on your part does not constitute an emergency on my part. |
 |
|
|
NguyenL71
Posting Yak Master
228 Posts |
Posted - 2011-02-11 : 18:01:37
|
I got it. Thanks.here is the code.DROP TABLE dbo.NewPools;goCREATE TABLE dbo.NewPools( [CustomerCode] [char](3) NOT NULL) GO INSERT INTO NewPools (CustomerCode) SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'GHI' UNION ALLSELECT 'GHI' UNION ALLSELECT 'GHI';go SELECT * FROM NewPools; go CustomerCode------------ABCABCABCABCABCABCDEFDEFDEFDEFGHIGHIGHI ;WITH cteTEST AS ( SELECT CustomerCode, ROW_NUMBER () OVER ( PARTITION BY CustomerCode ORDER BY CustomerCode ASC) AS 'RowNum' FROM NewPools ) SELECT CustomerCode + RIGHT(REPLICATE('0',3) + CAST(RowNum as varchar(3)),3) FROM cteTEST goABC001ABC002ABC003ABC004ABC005ABC006DEF001DEF002DEF003DEF004GHI001GHI002GHI003--------------------------quote: Originally posted by dataguru1971
DECLARE @Test TABLE( [CustomerCode] [char](3) NOT NULL) INSERT INTO @Test (CustomerCode) SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'ABC' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'DEF' UNION ALL SELECT 'GHI' UNION ALLSELECT 'GHI' UNION ALLSELECT 'GHI' SELECT * FROM @test;WITH cteTEST AS (SELECT CustomerCode, ROWNUM = Row_Number() OVER( ORDER BY CustomerCode) FROM @Test )SELECT CustomerCode + RIGHT(REPLICATE('0',3) + CAST(ROWNUM as varchar(3)),3)FROM cteTEST Poor planning on your part does not constitute an emergency on my part.
|
 |
|
|
|
|
|
|
|