我想对一个列名称来自另一个列值(列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
答案 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