问题描述
select
id,coalesce(iff(name = 'Alpha',price,null),null) alpha_price,null as beta_price,coalesce(iff(name = 'beta',null) beta_price
from table1
输入表:
ID name price
123 alpha 29
123 beta 40
输出:
id. alpha_price beta_price
123 29 NULL
123 NULL 40
预期输出:
id alpha_price beta_price
123 29 40
解决方法
我认为您想在这里汇总:
SELECT id,MAX(alpha_price) AS alpha_price,MAX(beta_price) AS beta_price
FROM table1
GROUP BY id;
这有效,至少在您显示的示例数据上是这样,因为 MAX
函数默认会忽略 NULL
值。
直接从输入表中使用条件聚合(聚合函数内的 case 表达式)应该可以直接得到想要的结果:
SELECT
id,MAX(case when name = 'alpha' then price end) AS alpha_price,MAX(case when name = 'beta' then price end) AS beta_price
FROM input_table
GROUP BY id