如何通过表中的“ product_id”对一组行进行分组,并通过比较组中的一组列值来创建新列?
例如,
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
我使用GROUP BY子句按product_id对其进行排序,但我无法弄清第二部分。
答案 0 :(得分:1)
--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
)
答案 1 :(得分:0)
使用子查询和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
答案 2 :(得分:0)
如果您仅对问题中显示的两列感兴趣,则有一个非常简单的解决方案:
select product_id, min(availability) feasible
from tbl group by product_id
请参阅此处以获取一些演示: http://rextester.com/GMT80394