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
我有一个 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