Re: PG Unpivot ?
| От | dfgpostgres |
|---|---|
| Тема | Re: PG Unpivot ? |
| Дата | |
| Msg-id | CAAcmDX8guTsQUb8FjRiX2i4PY+U-iqNGaY649Z6q+skcKMPn5g@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: PG Unpivot ? (hubert depesz lubaczewski <depesz@depesz.com>) |
| Список | pgsql-general |
Wow !
That did it, even with the predicate I stuck on the end when I tried it.
Thanks Depesz !
That did it, even with the predicate I stuck on the end when I tried it.
Thanks Depesz !
On Mon, Nov 3, 2025 at 12:22 PM hubert depesz lubaczewski <depesz@depesz.com> wrote:
On Mon, Nov 03, 2025 at 12:18:55PM -0500, dfgpostgres wrote:
> psql (13.2, server 15.3) on linux
>
> I think they call this "unpivot" in MSSQL ?
>
> How can I get an sql query to return one line per column with... an ID,
> column name and value. the ctid for the id field is fine.
>
> Example:
> dvdb=# create table unpivot (intcol integer, floatcol float, strcol
> varchar);
> CREATE TABLE
> dvdb=# insert into unpivot (intcol,floatcol,strcol) values
> (1,1.1,'one'),(2,2.2,'two'),(3,3.3,'three');
> INSERT 0 3
> dvdb=# select * from unpivot;
> intcol | floatcol | strcol
> --------+----------+--------
> 1 | 1.1 | one
> 2 | 2.2 | two
> 3 | 3.3 | three
> (3 rows)
> I want 9 records returned, each row with 3 cols, 1st col is the ctid,
> second is the column name, third is the val.
I think it should work:
select u.ctid, e.* from unpivot u, to_jsonb(u) j, jsonb_each_text(j) e;
Best regards,
depesz
В списке pgsql-general по дате отправления: