SQL 合并空列

问题描述

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...