Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

postgresql pivot with multiple columns having data

i want to pivot/crosstab below table

source data

I tried below query in postgresql but it gives error ERROR: invalid return type DETAIL: Query-specified return tuple has 6 columns but crosstab returns 5

 SELECT * FROM crosstab(
'select Key,status,v_text,v_number,v_dob from table 
    where type = ''First_Name'' or type = ''Last_Name''  or type = ''DOB'' or type = ''Contact'' order by 1',
'select distinct type  from table where type = ''First_Name'' or type = ''Last_Name'' or type = ''DOB'' or type = ''Contact'' order by 1')
 AS ct( Key int, First_Name text,   Last_Name  text, DOB date, Contact int);

required output is like below which has all types with values. Is it possible in pgsql

enter image description here

like image 694
Hari Avatar asked Oct 24 '25 18:10

Hari


1 Answers

You can do it like below -

select  key,
  status,
  max(case when type = 'First name' then v_text end) As first_name,        
  max(case when type = 'Last name' then v_text end) As last_name, 
  max(case when type = 'DOB' then v_date end) As DOB,
  max(case when type = 'Contact' then v_number end) As Contact 
from mytable 
group by key, status;
like image 162
Somy Avatar answered Oct 26 '25 07:10

Somy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!