Hi,
You can try the following CTE which removes all the identical rows and only leave single row
WITH CTE AS (
SELECT ctid, ROW_NUMBER() OVER (PARTITION BY proj_nbr, proj_name, start_date, end_date, description, notes ORDER BY proj_nbr) AS rn
FROM projects
WHERE proj_nbr = '4242.02'
)
DELETE FROM projects
WHERE ctid IN (
SELECT ctid FROM CTE WHERE rn > 1
);
You can try the following CTE which removes all the identical rows and only leave single row
WITH CTE AS (
SELECT ctid, ROW_NUMBER() OVER (PARTITION BY proj_nbr, proj_name, start_date, end_date, description, notes ORDER BY proj_nbr) AS rn
FROM projects
WHERE proj_nbr = '4242.02'
)
DELETE FROM projects
WHERE ctid IN (
SELECT ctid FROM CTE WHERE rn > 1
);
On Tue, 10 Sept 2024 at 20:07, Rich Shepard <rshepard@xxxxxxxxxxxxxxx> wrote:
I've no idea how I entered multiple, identical rows in a table but I want to
delete all but one of these rows.
Here's an example:
bustrac=# select * from projects where proj_nbr = '4242.01';
proj_nbr | proj_name | start_date | end_date | description | notes
----------+----------------+------------+------------+---------------+-------
4242.01 | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
4242.01 | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
4242.01 | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
4242.01 | Expert witness | 2008-10-15 | 2008-10-28 | Consol Energy |
(4 rows)
How do I clean this up so there's only a single row for this project number?
TIA,
Rich