Nuke
Nuke

Reputation: 83

Postgres Wide To Long by Case/Value

I have a table like:

id  grouping   value
1   Group 1      Y
2   Group 1      Y
2   Group 2      Y
3   Group 1      Y

I already managed

id  Group 1  Group 2
1      Y        
2      Y       
2               Y
3      Y      

I need to transpose to

id  Group 1 Group 2
1     Y       N
2     Y       Y
3     Y       N

Upvotes: 0

Views: 589

Answers (1)

Kaushik Nayak
Kaushik Nayak

Reputation: 31666

Try this.

SELECT id
    ,MAX(CASE 
            WHEN grouping = 'Group 1'
                THEN 'Y'
            ELSE 'N'
            END) AS "Group 1"
    ,MAX(CASE 
            WHEN grouping = 'Group 2'
                THEN 'Y'
            ELSE 'N'
            END) AS "Group 2"
FROM t
GROUP BY id
ORDER BY id

Demo

Upvotes: 1

Related Questions