September 8, 2011 at 4:43 am
I have a SQL 2005 table (Table_A). One field (File_Name) may contain many instances of the same value. I need an additional field (Instance) which acts as a counter. What is the easiest way to achieve this? Each record is to be inserted individually 'one-at-a-time'.
Example:
Before
File_Name
Abc_Charlie
Abc_Neal
Abc_Neal
Abc_Tom
Abc_Tom
Def_Ed
Def_Ed
Ghi_Julie
Ghi_Ian
Ghi_Ian
Ghi_Darcy
After
File_Name Instance
Abc_Charlie1
Abc_Neal 1
Abc_Neal 2
Abc_Tom 1
Abc_Tom 2
Def_Ed1
Def_Ed2
Ghi_Julie 1
Ghi_Ian1
Ghi_Ian2
Ghi_Ian3
Ghi_Darcy1
Any ideas? Thanks in advance,
September 8, 2011 at 5:55 am
my suggestion: don't store a total in the table. create a view which calculates the total on demand instead...that way it will always be accurate, and you don't need a trigger or any otehr process to "fix" the totals every time one row is added,edited or deleted.
/*File_NameTheCount
Abc_Charlie1
Abc_Neal2
Abc_Tom2
Def_Ed2
Ghi_Darcy1
Ghi_Ian2
Ghi_Julie1
*/
With MySampleData ([File_Name])
AS
(
SELECT 'Abc_Charlie' UNION ALL
SELECT 'Abc_Neal' UNION ALL
SELECT 'Abc_Neal' UNION ALL
SELECT 'Abc_Tom' UNION ALL
SELECT 'Abc_Tom' UNION ALL
SELECT 'Def_Ed' UNION ALL
SELECT 'Def_Ed' UNION ALL
SELECT 'Ghi_Julie' UNION ALL
SELECT 'Ghi_Ian' UNION ALL
SELECT 'Ghi_Ian' UNION ALL
SELECT 'Ghi_Darcy')
SELECT [File_Name],
COUNT([File_Name]) As TheCount
FROM MySampleData
GROUP BY [File_Name]
Lowell
September 8, 2011 at 8:29 am
I'd agree with Lowell. There isn't a way to do this on a field, you'd have to build a UDF or code that would check to see if the next insert needed an increment.
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy