with instute_temp3_result_1 as (
select
t4.instun_name,
str_to_map(
concat_ws(
'&',
collect_set(
concat_ws('=', t4.auth_result, t4.auth_result_count)
)
),
'&',
'='
) as map_remote
from
instute_temp3_result t4
group by
t4.instun_name
)
select
t5.instun_name,
nvl(t5.map_remote ['S1'], 0) as S1,
nvl(t5.map_remote ['S2'], 0) as S2,
nvl(t5.map_remote ['S3'], 0) as S3
from
instute_temp3_result_1 t5
方法二:利用case when函数
select
t4.instute_name,
max(
case
when t4.auth_result = 'S1' then t4.auth_result_count
else null
end
) as S1,
max(
case
when t4.auth_result = 'S2' then t4.auth_result_count
else null
end
) as S2,
max(
case
when t4.auth_result = 'S3' then t4.auth_result_count
else null
end
) as S3
from
instute_temp3_result t4
group by
t4.instute_name