with
data as (
select null a, null b, null c from dual
union all
select 'a' a, null b, null c from dual
select null a, 'b' b, null c from dual
select null a, null b, 'c' c from dual
select 'a' a, 'b' b, null c from dual
select 'a' a, null b, 'c' c from dual
select null a, 'b' b, 'c' c from dual
select 'a' a, 'b' b, 'c' c from dual
)
select a, b, c,trim(trailing ',' from case when a is null then '' else a||',' end ||case when b is null then '' else b||',' end || case when c is null then '' else c end)
col
from data