From: | Kong Man <kong_mansatiansin(at)hotmail(dot)com> |
---|---|
To: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Writeable CTE Not Working? |
Date: | 2013-01-29 02:32:51 |
Message-ID: | DUB116-W6555FD44F7B4D966C07B48B1F0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Can someone explain how this writable CTE works? Or does it not?
What I tried to do was to make those non-null/non-empty values of suppliers.suppliercode unique by (1) nullifying any blank, but non-null, suppliercode, then (2) appending the supplierid values to the suppliercode values for those duplicates. The writeable CTE, upd_code, did not appear to work, allowing the final UPDATE statement to, unexpectedly, fill what used to be empty values with '-'||suppliercode.
WITH upd_code AS (
UPDATE suppliers SET suppliercode = NULL
WHERE suppliercode IS NOT NULL
AND length(trim(suppliercode)) = 0
)
, ranked_on_code AS (
SELECT supplierid
, trim(suppliercode)||'-'||supplierid AS new_code
, rank() OVER (PARTITION BY upper(trim(suppliercode)) ORDER BY supplierid)
FROM suppliers
WHERE suppliercode IS NOT NULL
AND NOT inactive AND type != 'car'
)
UPDATE suppliers
SET suppliercode = new_code
FROM ranked_on_code
WHERE suppliers.supplierid = ranked_on_code.supplierid
AND rank > 1;
I have seen similar behavior in the past and could not explain it. Any explanation is much appreciated.
Thanks,
-Kong
From | Date | Subject | |
---|---|---|---|
Next Message | Виктор Егоров | 2013-01-29 07:40:20 | Re: Writeable CTE Not Working? |
Previous Message | Tom Lane | 2013-01-24 01:42:47 | Re: How to access multicolumn function results? |