0

フィルター値に基づいてクエリを実行するときに、列を 2 つの列に分割することはできますか?

たとえば、特定のデータベース スキーマ

x varchar
a integer
b 0,1

クエリを実行できます

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

それはで終わるでしょう

 x | asum 
---+-----
...| ...

bが0と1に等しい場合、aの個別の合計を計算したい

したがって、結果セットは

 x | as for x = 0 | as for x = 1
---+--------------+---------------
...|    ...       |  ...

原因私は実行することができます

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

ただし、それには追加のアプリケーション側の変換が必要になります

4

1 に答える 1

3

ほとんどのデータベースでは、条件付き集計を行うことができます。

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( here ) をサポートしているように見えるので、これは機能するはずです。

于 2016-03-11T15:07:16.300 に答える