如何为这些 ID 创建唯一 ID 条目并过滤特定列值 (Postgresql)

How to create unique id entries and filter for specific column values for these ids (Postgresql)

您可以在下面看到每个客户的多个产品条目以及他们购买产品的时间。但是,我只对他们是否购买过产品 1 感兴趣,如果他们从未购买过,我会用产品 x 填充单元格,而不是跳过 id。我正在使用 Postgresql!

这是当前的 table:

这是期望的结果:

我正在尝试这个 table 但它并没有提供我正在寻找的东西。是否可以将第一个 table 完全转换为第二个?

select distinct on ("id")
"id", "buying date", "product",
case when "product"='product 1' then 'product 1' else 'product x' as "Product2"
from product
order by 1,2

如果我没理解错的话,你要的逻辑应该在order by子句中:

select distinct on ("id")
       "id", "buying date", "product"
from product
order by id,
         ("product" = 'product 1') desc,  -- put product1 first
         "buying date";

对于布尔表达式,DESC 先对 true 值排序,然后对 false 排序。