对列名称来自另一列值的列求和

时间:2019-10-23 09:45:52

标签: sql oracle

我想对一个列名称来自另一个列值(列2)的列进行求和

Col.1   Col.2   Q1  Q2  Q3
a   Q1  1   1   4
a   Q1  2   1   1
c   Q1  2   1   2

尝试过案例功能似乎没有希望

select col.1, col.2, sum(case when col.2='Q1' then 'Q1',
when col.2='Q2' then 'Q2' end as Total)
from tabl
group by col.1, col.2

Col.1   Col.2   Q1
a   Q1  3
c   Q1  2

2 个答案:

答案 0 :(得分:1)

如果我理解得很好,您可能需要:

select Col1, Col2,
        sum(
                case
                    when Col2='Q1' then Q1
                    when Col2='Q2' then Q2
                    else 0
                end
           ) as Total
from yourTable
group by Col1, Col2

例如,使用您的示例数据:

with yourTable(Col1, Col2, Q1, Q2, Q3) as (
  select 'a',    'Q1',    1,    1,    4 from dual union all
  select 'a',    'Q1',    2,    1,    1 from dual union all
  select 'c',    'Q1',    2,    1,    2 from dual
)
select Col1, Col2,
        sum(
                case
                    when Col2='Q1' then Q1
                    when Col2='Q2' then Q2
                    else 0
                end
           ) as Total
from yourTable
group by Col1, Col2

给予:

COL1 COL2      TOTAL
---- ---- ----------
a    Q1            3
c    Q1            2

答案 1 :(得分:1)

只需将'Q1'替换为Q1,将'Q2'替换为Q2

select col1
     , col2
     , sum(case
               when col2 = 'Q1' then Q1,
               when col2 = 'Q2' then Q2
           end) as Total
from tabl
group by col1, col2