通过比较一组列值来创建一个新列

vmdwslir  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(364)

如何根据表中的“产品标识”对集合行进行分组,并通过比较组中的一组列值来创建新列?
例如,

product id   part_id  availability
1            1        true
1            2        false
1            3        true
2            1        true
2            4        true
2            8        true

通过比较“可用性”,我想创建一个“可行性”列。如果缺少一个零件,那就不可行了。

product_id  feasibility
1           false
2           true

我使用GROUPBY子句按产品id对它们进行分类,但我无法理解第二部分。

pnwntuvh

pnwntuvh1#

如果您只对问题中显示的两列内容感兴趣,有一个非常简单的解决方案:

select product_id, min(availability) feasible
from tbl group by product_id

看看这里demo:. http://rextester.com/gmt80394

ukdjmx9f

ukdjmx9f2#

--insert into test(product_id, availability) values (1,true),(1,false),(2,true),(2,true);

select distinct product_id 
from test
where product_id not in (
    select product_id
    from test
    group by product_id, availability
    having availability=false
)
kiayqfof

kiayqfof3#

使用子查询和 case when 条款

select t.productid,case when availability ='true' 
    then 'product available' else 'product not available' end as feasibility 
   from 
    (
        select  productid,availability from your_table
        group by  productid,availability
    ) as t

相关问题