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 |
|
pjyelton
Starting Member
4 Posts |
Posted - 2010-03-19 : 19:38:53
|
Hello, I need help with writing a query. Basically what I want to do is give a unique identifier for each group of duplicates in a table. For example, if this is my data:FIRST LAST AGE DUPENUMBOB JONES 16BOB JONES 16BOB JONES 34TOM ADAMS 21JOE BROWN 37TOM ADAMS 21JOE BROWN 37 and I want my duplicate to be FIRST/LAST/AGE, after the query is run the table looks like this:FIRST LAST AGE DUPENUMBOB JONES 16 1BOB JONES 16 1BOB JONES 34TOM ADAMS 21 2JOE BROWN 37 3TOM ADAMS 21 2JOE BROWN 37 3 So each new duplicate group gets the next available dupenum.Thanks for any help! |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-03-19 : 20:10:32
|
what is the version of SQL Server you are using ? KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
pjyelton
Starting Member
4 Posts |
Posted - 2010-03-19 : 23:47:02
|
| 2005, although in the end this code will instead be run as a stored procedure through Java. |
 |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2010-03-20 : 00:04:07
|
[code]DECLARE @sample TABLE( [FIRST] varchar(10), [LAST] varchar(10), [AGE] int)INSERT INTO @sampleSELECT 'BOB', 'JONES', 16 UNION ALLSELECT 'BOB', 'JONES', 16 UNION ALLSELECT 'BOB', 'JONES', 34 UNION ALLSELECT 'TOM', 'ADAMS', 21 UNION ALLSELECT 'JOE', 'BROWN', 37 UNION ALLSELECT 'TOM', 'ADAMS', 21 UNION ALLSELECT 'JOE', 'BROWN', 37SELECT s.[FIRST], s.[LAST], s.AGE, d.[DUPENUM]FROM @sample s LEFT JOIN ( SELECT [FIRST], [LAST], AGE, [DUPENUM] = dense_rank() OVER (ORDER BY [FIRST], [LAST], AGE) FROM @sample GROUP BY [FIRST], [LAST], AGE HAVING COUNT(*) > 1 ) d ON s.[FIRST] = d.[FIRST] AND s.[LAST] = d.[LAST] AND s.[AGE] = d.[AGE] /*FIRST LAST AGE DUPENUM ---------- ---------- ----------- -------------------- BOB JONES 16 1BOB JONES 16 1BOB JONES 34 NULLTOM ADAMS 21 3JOE BROWN 37 2TOM ADAMS 21 3JOE BROWN 37 2(7 row(s) affected)*/[/code] KH[spoiler]Time is always against us[/spoiler] |
 |
|
|
pjyelton
Starting Member
4 Posts |
Posted - 2010-03-20 : 00:17:21
|
| Brilliant, thanks!!! |
 |
|
|
|
|
|
|
|