Sql 根据查询中的筛选值将列拆分为两列

Sql 根据查询中的筛选值将列拆分为两列,sql,voltdb,Sql,Voltdb,在基于筛选器值执行查询时,是否可以将一列拆分为两列 例如,给定数据库模式 x varchar a integer b 0,1 我可以执行查询 select x , sum(a) as asum from t group by x 那将以失败告终 x | asum ---+----- ...| ... 现在我想计算a的异和,如果b等于0和1 因此,结果集应该是 x | as for x = 0 | as for x = 1 ---+--------------+------------

在基于筛选器值执行查询时,是否可以将一列拆分为两列

例如,给定数据库模式

x varchar
a integer
b 0,1
我可以执行查询

select x , sum(a) as asum from t group by x
那将以失败告终

 x | asum 
---+-----
...| ...
现在我想计算a的异和,如果b等于0和1

因此,结果集应该是

 x | as for x = 0 | as for x = 1
---+--------------+---------------
...|    ...       |  ...
我当然可以执行

select x , sum(a) as asum, b as as from t group by x, b

但这需要额外的应用程序端转换

在大多数数据库中,您可以执行条件聚合:

select x,
       sum(case when b = 0 then a else 0 end) as a_0,
       sum(case when b = 1 then a else 0 end) as a_1
from t
group by x;

Voltdb似乎支持
case
(),因此这应该可以工作。

在大多数数据库中,您可以执行条件聚合:

select x,
       sum(case when b = 0 then a else 0 end) as a_0,
       sum(case when b = 1 then a else 0 end) as a_1
from t
group by x;
Voltdb似乎支持
case
(),因此这应该可以工作