Sql 如何检查客户是否已提出保修申请和产品销售?

Sql 如何检查客户是否已提出保修申请和产品销售?,sql,postgresql,Sql,Postgresql,我想知道如何在PostgreSQL中查看客户是否同时进行了保修索赔和产品销售 例如,我有一个这样的客户 客户编号 订单编号 品名 ABC123 1426457 产品A ABC123 1426458 保修索赔 使用bool_或()对CustomerID进行聚合,并检查产品名称是否为WARRENTY索赔,您将预期结果作为聚合返回。因此,一个检查应该是是否至少有一个WARRENT索赔,以及至少有一个没有 如果要在每条记录上都显示此信息,可以使用: 请提供预期输出。此布尔列应显示在何处?在您输入的每

我想知道如何在PostgreSQL中查看客户是否同时进行了保修索赔和产品销售

例如,我有一个这样的客户

客户编号 订单编号 品名 ABC123 1426457 产品A ABC123 1426458 保修索赔

使用
bool_或()
CustomerID
进行聚合,并检查
产品名称是否为
WARRENTY索赔
,您将预期结果作为聚合返回。因此,一个检查应该是是否至少有一个
WARRENT索赔
,以及至少有一个没有


如果要在每条记录上都显示此信息,可以使用:


请提供预期输出。此布尔列应显示在何处?在您输入的每个记录上(所以,两次为真,两次为假)?或者它应该是customerID上的聚合?好的,它应该在每个记录上好的,但是如果每个客户有两个以上的订单呢?我需要t1、t2、t3、t4、t5等等吗?
SELECT
    "CustomerID",
    bool_or("Product Name" = 'WARRANTY CLAIM')
        AND
    bool_or("Product Name" != 'WARRANTY CLAIM')
FROM mytable
GROUP BY "CustomerID"
SELECT
    *,
    bool_or("Product Name" = 'WARRANTY CLAIM') OVER (PARTITION BY "CustomerID")
        AND
    bool_or("Product Name" != 'WARRANTY CLAIM') OVER (PARTITION BY "CustomerID")
FROM mytable