postgresql SQL将值的组合转换为记录组合是否存在的列

31moq8wy  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(111)

给定一个PSQL结果表,如下所示:
| ID|颜色|
| - -----|- -----|
| 一百二十三|红色|
| 一百二十三|蓝色|
| 四百五十六|绿色|
| 七八九|红色|
| 七八九|绿色|
我想在下面的视图中返回结果:
| ID|红色|绿色|蓝色|
| - -----|- -----|- -----|- -----|
| 一百二十三|X型||X型|
| 四百五十六||X型||
| 七八九|X型|X型||
其中“X”表示ID和颜色的组合存在于我的原始结果表中。

9ceoxa92

9ceoxa921#

您可以使用条件聚合。例如:

select
  id,
  max(case when color = 'Red' then 'X' end) as red,
  max(case when color = 'Green' then 'X' end) as green,
  max(case when color = 'Blue' then 'X' end) as blue
from t
group by id

相关问题