postgresql 基于多列条件SQL添加列

new9mtju  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(112)

我有两个这样的模拟表:
表1:
| ID|类型|
| --------------|--------------|
| 1|EE|
| 二|MM|
| 三|EE|
表2:
| ID|Col1|Col2|
| --------------|--------------|--------------|
| 1|红色|是的|
| 二|蓝色|是的|
| 三|红色|不想|
我想一个SQL查询,添加一个新的列表2是根据以下逻辑确定:电气:类型:EE和Col 1:红色和Col 2:是技工:类型:MM和Col 1:蓝色和Col 2:是的
我期待这个结果:
表2:
| ID|Col1|Col2|新列|
| --------------|--------------|--------------|--------------|
| 1|红色|是的|电动|
| 二|蓝色|是的|机械师|
| 三|红色|不想||

wr98u20j

wr98u20j1#

你可以几乎完全按照你写的那样实现这个逻辑,在case expression中:

case 
    when Type = 'EE' and Col1 = 'Red' AND Col2 = 'Yes' then 'Electric'
    when Type = 'MM' AND Col1 = 'Blue' AND Col2 = 'Yes' then 'Mechanic'
end

作为选择查询,请注意,这里应该为每个列引用包括表别名:

select
    t1.id, t1.type, t2.col1, t2.col2,
    case 
        when t1.Type = 'EE' and t2.Col1 = 'Red' AND t2.Col2 = 'Yes' then 'Electric'
        when t1.Type = 'MM' AND t2.Col1 = 'Blue' AND t2.Col2 = 'Yes' then 'Mechanic'
    end as NewColumn
from table1 as t1
inner join table2 as t2 on t1.id = t2.id

相关问题