Postgres 从宽到长 Case/Value

Postgres Wide To Long by Case/Value

我有一个 table 喜欢:

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

我已经做到了

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

我需要转置为

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

试试这个。

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