我有一组按"product_group_id"、"group_name"和"class"分组的数据.此组的产品名称不同.
CREATE TABLE rule (
product_id integer
, product_group_id integer
, group_name text
, class text
, name text
);
INSERT INTO rule VALUES
(1, 4, 'fruit', '0010', 'apple')
, (2, 4, 'fruit', '0010', 'cherry')
, (3, 4, 'fruit', '0010', 'pineapple')
, (4, 4, 'fruit', '0010', 'tomato')
, (5, 4, 'fruit', '0010', 'banana')
, (6, 4, 'fruit', '0010', 'peach')
在 Select 过程中,我想判断"名称"列表,如果"番茄"名称存在于集合中,我会将"无效"值或"有效"添加到新的"标签"列. 上述数据示例的结果将为(番茄名称存在):
product_group_id | group_name | class | label |
------------------------------------------------
4 | fruit | 0010 | invalid |
或者,如果集合中不存在"番茄"名称,则该名称将有效:
product_group_id | group_name | class | label |
------------------------------------------------
4 | fruit | 0010 | valid |
到目前为止,如果番茄出现在集合中,我可以同时获得两个组的有效和无效.
select r.product_group_id, r.group_name, r.class,
case
when r.name='tomato' then 'invalid'
else 'valid'
end label
from rule r
group by r.product_group_id, r.group_name, r.class, label;
product_group_id | group_name | class | label |
------------------------------------------------
4 | fruit | 0010 | valid |
4 | fruit | 0010 | invalid |