Dear all,

I am not able to insert data into a table in horizontal form.

The data is in below form :

A show a small set of data :-

*c_id               f_name           f_value*
2                     k1                      v1
2                     k2                      v2
2                     k3                      v3
2                     k4                       v4
3                     a1                        b1
3                     a2                        b2
3                     a3                        b3
3                     a4                        b4
3                     a5                        b5
1                     c1                        d1
1                     c2                        d2
3                     a1                        e1
3 a2 e2 3 a3 e3 3 a4 e4 3 a5 e5

Now i want to show the above data in horizontal form as per c_id , fore.g if a user enters c_id 3 then output is :

*c_id a1 a2 a3 a4 a5
3                     b1            b2            b3           b4         b5
**3 e1 e2 e3 e4 e5

*i.e f_name entries became the columns of the table & f_value become the rows


I research on crosstab function but i don'e think it is useful because we have to give column names in the command. I want to show it dynamically . I try to create a procedure & also attach it.

A user enters only c_id & output is shown fore.g if a user enters c_id 1 then output is

*c_id               c1               c2*
1                     d1               d2

I show the data in simple way bt there r 10000 of rows & 100 of c_id's.


Please let me know if it is possible or any information is required.


Thanks



create function user_news_new(text) returns void as $$
declare
name text;
cat_name alias for $1;
begin
CREATE TEMPORARY TABLE temptest(category_id INTEGER,category_name text); /* create a temp table to hold all the dynamic schemas*/ for name in select label_name from category_new where category_id = (select category_id from category where category_name=cat_name) loop
execute 'alter table temptest add column ' || name || ' text';
end loop;
end;
$$ language plpgsql;

Reply via email to