Bill Thoen wrote:
Steve Atkins wrote:

On Oct 14, 2008, at 9:04 AM, Bill Thoen wrote:

I've got a table with repeated records that I want to make unique by adding a sequence code of 0,1,2,...,n for each set of repeated records. Basically, I want to turn:
field_id | seq
----------+-----
      1 |   0
      2 |   0
      3 |   0
      3 |   0
      3 |   0
      4 |   0
      4 |   0
      5 |   0
      6 |   0
into:
field_id | seq
----------+-----
      1 |   0
      2 |   0
      3 |   0
      3 |   1
      3 |   2
      4 |   0
      4 |   1
      5 |   0
      6 |   0

What's the best way to that?

This is mildly tricky to do, and hard to maintain.

In most cases where people say they need this, they're actually perfectly happy with the seq value being enough to make the row unique, and ideally increasing in order of something such as insertion time ...

I know its academic now. But this is a great use case for the windowing functions being added to 8.4. In 8.4 it should be as easy as

SELECT field_id, RANK() OVER(PARTITION BY field_id) AS seq
FROM foo;


Artacus

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to