1

6つの値(1、2、3、A、B、C)を保持できる列があります

私はそれらを数えることができます(*)ので、このようになります

select mycol, count(*) as ttl from mytable group by mycol;
    mycol  ttl
    1       46
    2       53
    3       10
    A       5 
    B       4
    C       2

しかし、私はこのように1とA、2とBを合計したい

mycol total
var1    51
var2    57
var3    12

ケースステートメントはこれで機能しますか?ケース1またはAのように、それらを同じように扱います

4

1 に答える 1

3

はい、これにはcaseステートメントが機能します。

select (case when mycol in ('1', 'var1') then 'var1'
             when mycol in ('2', 'var2') then 'var2'
             when mycol in ('3', 'var3') then 'var3'
        end),
       sum(ttl) as Total
from mytable t
group by (case when mycol in ('1', 'var1') then 'var1'
               when mycol in ('2', 'var2') then 'var2'
               when mycol in ('3', 'var3') then 'var3'
          end);

編集:

各値に複数の行を持つデータがある場合:

select (case when mycol in ('1', 'var1') then 'var1'
             when mycol in ('2', 'var2') then 'var2'
             when mycol in ('3', 'var3') then 'var3'
        end),
       count(*) as Total
from mytable t
group by (case when mycol in ('1', 'var1') then 'var1'
               when mycol in ('2', 'var2') then 'var2'
               when mycol in ('3', 'var3') then 'var3'
          end);
于 2013-08-05T22:36:41.400 に答える