Похоже, вы хотите:
select
case when type = 2 then sum(balance) else 0 end type2balance,
case when type = 66 then sum(balance) else 0 end type66balance,
case when type = 2 then sum(new) else 0 end type2new,
case when type = 66 then sum(new) else 0 end type66new
from mytable
where type in (2, 66)
group by type
Я не уверен, какой logi c вы хотите для столбца Mem
в результирующем наборе. Это просто номер строки, тогда:
select
row_number() over(order by type) mem,
case when type = 2 then sum(balance) else 0 end type2balance,
case when type = 66 then sum(balance) else 0 end type66balance,
case when type = 2 then sum(new) else 0 end type2new,
case when type = 66 then sum(new) else 0 end type66new
from mytable
where type in (2, 66)
group by type
Мы могли бы поместить условное выражение на type
внутри агрегатной функции, но это не имеет смысла, поскольку вы уже группируете по type
. В этом случае это будет:
select
row_number() over(order by type) mem,
sum(case when type = 2 then balance else 0 end) type2balance,
sum(case when type = 66 then balance else 0 end) type66balance,
sum(case when type = 2 then new else 0 end) type2new,
sum(case when type = 66 then new else 0 end) type66new
from mytable
where type in (2, 66)
group by type