Click here to Skip to main content
15,910,981 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

I have to maintain the purchase details for my company in single table, there are three Purchase dept that are involve in purchase and they are maintaining there own 'Purchase order SlNo'....

hence i cant use Auto increment number and I should have to use something like

X-001
X-002
...all belongs to only first dept

Y-001
Y-002
...all belongs to only second dept

Z-001
z-002
...all belongs to only third dept

Can any One please help me out and suggest the best practice?
(Using C#)
Posted
Updated 21-Oct-13 0:07am
v2

Not a big deal. Based on the prefix, you just increment value of suffix.
Custom Auto-Generated Sequences with SQL Server[^]
 
Share this answer
 
-- 

First Create The Tables :


Generate Student Ids :

create table  CSE
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'CSE'+'000'+convert(varchar,ID)
when 2 then 'CSE'+'000'+convert(varchar,ID)
else 'CSE'+convert(varchar,ID)
end
)

--insert into CSE default values

create table  ECE
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'ECE'+'000'+convert(varchar,ID)
when 2 then 'ECE'+'000'+convert(varchar,ID)
else 'ECE'+convert(varchar,ID)
end
)

--insert into ECE default values

create table  EEE
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'EEE'+'000'+convert(varchar,ID)
when 2 then 'EEE'+'000'+convert(varchar,ID)
else 'EEE'+convert(varchar,ID)
end
)

--insert into EEE default values

create table  IT
(
Id int identity(1,1),
--BranchName varchar(10),
Pid as case  len(Id) when 1 then 'IT'+'000'+convert(varchar,ID)
when 2 then 'IT'+'000'+convert(varchar,ID)
else 'IT'+convert(varchar,ID)
end
)

--insert into IT values('IT')

create table  MECH
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'MECH'+'000'+convert(varchar,ID)
when 2 then 'MECH'+'000'+convert(varchar,ID)
else 'MECH'+convert(varchar,ID)
end
)

--insert into MECH default values

create table  CIVIL
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'CIVIL'+'000'+convert(varchar,ID)
when 2 then 'CIVIL'+'000'+convert(varchar,ID)
else 'CIVIL'+convert(varchar,ID)
end
)

--insert into CIVIL default values

create table  PROD
(
Id int identity(1,1),
Pid as case  len(Id) when 1 then 'PROD'+'000'+convert(varchar,ID)
when 2 then 'PROD'+'000'+convert(varchar,ID)
else 'PROD'+convert(varchar,ID)
end
)


create table Temp123(StudentId varchar(10))

------------------------------------------------------------------
 
Share this answer
 
Comments
Manzoor Ahmed P 22-Oct-13 0:15am    
thank u VeeraAnnapureddy...

I did something similar like this

CREATE TABLE dbo.tblCompany
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
CompanyID AS 'X-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here....
)
Hi,
you can make use of Computed SQL Columns with User Defined or Custom values. refer below articles.

Specify Computed Columns in a Table[^]
SQL Server Customer Advisory Team[^]
How to define a “complicated” ComputedColumn in SQL Server?[^]

hope it helps.
 
Share this answer
 
After Creating Tables , Use This Sp.

If U Pass The Student Id like 'CSE' The Automatically StudentId 'CSE00001' Is generate, visvarsa Which Branch Name U can Pass In @studentId That Student Id Generated.(Student Id is Identity)

CREATE  PROC [dbo].[Usp_GenerateID]
(
	@StudentId VARCHAR(10)
)

-- EXEC Usp_GenerateID 'CSE'

	AS

	SET NOCOUNT ON

	BEGIN

IF ((SELECT BranchName  FROM ColzBranchDetails WHERE BranchName = @StudentId)='CSE')
BEGIN 
INSERT INTO CSE DEFAULT VALUES
INSERT Temp123 
SELECT Pid FROM CSE  WHERE Pid not in (SELECT StudentId FROM Temp123 WHERE StudentID = CSE.Pid)
END
					
ELSE

IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='ECE')
BEGIN 
INSERT INTO ECE DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM ECE  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = ECE.Pid)
END
				
ELSE
					
IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='EEE')
BEGIN 
INSERT INTO EEE DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM EEE  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = EEE.Pid)
END

ELSE
					
IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='IT')
BEGIN 
INSERT INTO IT DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM IT  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = IT.Pid)
END
					
ELSE
					
IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='MECH')
BEGIN 
INSERT INTO MECH DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM MECH  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = MECH.Pid)
END
					
ELSE
IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='CIVIL')
BEGIN 
INSERT INTO CIVIL DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM CIVIL  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = CIVIL.Pid)
END
					
ELSE
					
IF ((SELECT BranchName  FROM ColzBranchDetails 
WHERE BranchName = @StudentId )='PROD')
BEGIN 
INSERT INTO PROD DEFAULT VALUES
INSERT Temp123
SELECT Pid FROM PROD  WHERE Pid not in  (SELECT StudentId FROM Temp123 WHERE StudentID = PROD.Pid)
END
	
END
	
SET NOCOUNT OFF

</pre>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900