Не совсем. Но в Oracle 12+ это может показаться немного проще:
select x.which, corr(x.target, x.source)
from t cross join lateral
(select 'source001' as which, target, source1 as source from dual union all
select 'source002' as which, target, source2 as source from dual union all
. . .
select 'source270' as which, target, source270 as source from dual
) x
group by which;
Для просто корреляция это не проще, чем перечисление функций corr()
по отдельности. Но вы можете легко добавить больше статистики - скажем, min()
, max()
или count()
- без повторения всех столбцов (или без ограничения по столбцам).