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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求和列名称来自另一列的值的列相关的知识,希望对你有一定的参考价值。

我想对一个列名称来自另一个列值的列进行求和(Col.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
答案

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

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

以上是关于求和列名称来自另一列的值的列的主要内容,如果未能解决你的问题,请参考以下文章

如何获得具有已知名称的列左侧的列名称?

Pyspark数据帧:根据另一列的值提取列

将一列的值除以另一列

保留数据框中的行,对于某些列的值的所有组合,在另一列中包含相同的元素

尝试使用 MySQL 创建具有同一表中另一列的季节至今平均值的列

透视列以填充另一列中的值