Re: How to create crosstab with 3 values in every crosstab column

From: "Andrus" <kobruleht2(at)hot(dot)ee>
To: "Misa Simic" <misa(dot)simic(at)gmail(dot)com>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to create crosstab with 3 values in every crosstab column
Date: 2012-02-06 18:01:44
Message-ID: 6D3CC6E236244513979115C62BCD2412@dell2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thank you.

> the point is - it is not possible to get unknown no of columns in 1 SQL
> query...
>i.e.
>Account, Store, Amount
>100, St1, 1000.00
>100, St2, 2000.00
>to get:
>Acount, St1 , St2
>100, 1000.00 2000.00
>to get that in your query... St1 and St2 - must be hardcoded... (is there 1
>column per Store, or 3 columns per store it >is less important...)
>if it St1 and St2 are hardcoded in query, even if in table is:
>Account, Store, Amount
>100, St1, 1000.00
>100, St2, 2000.00
>100, St3, 3000.00
>We would get the same result...actually if we want St3 we need to change
>our query and add St3 in it...
>that is the reason why we use Dynamic SQL to build the query...
>when you build your Dynamic SQL query... you could use COPY (dynamicQuery)
>TO CSV file...
>or instead of to build dynamic query, you can export directly to file...

I din't knwo this. This seems very serious limitation which makes crosstab
useless .
I tried

create temp table sales (
account char(10),
store char(10),
sales numeric(12,2) ) on commit drop;

insert into sales values
('311','ST1',100), ('311','STN',200),
('312','ST1',400), ('312','STN',600);

select * from
crosstab('select * from sales', 'select distinct store from sales' ) x

and got error

ERROR: a column definition list is required for functions returning
"record"

Can we use something like

select * from
dynamicwrapper( crosstab('select * from sales', 'select distinct store
from sales' )) x

Where to find generic dynamicwrapper stored procedure which fixes this by
building dynamic query itself or other idea ?

Andrus.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Misa Simic 2012-02-06 18:51:59 Re: How to create crosstab with 3 values in every crosstab column
Previous Message bonave 2012-02-06 17:53:16 Re: Save and load jpg in a PostgreSQL database