关于博客 上一篇博客:Oracle listagg 函数中,认为listagg并不是行列转换函数的说法,下面进行一下补充解释。
其实很简单,如果用行列转换的方法生成的结果是下面这个样子
区别就是所有的数据并不是在同一列中,所以说listagg应该属于聚集函数。
SQL是这样的:
with x as
(select Level as col from dual connect by level <= 9),
y as
(select a.col as col_a,
b.col as col_b,
to_char(a.col) || 'X' || to_char(b.col) || '=' ||
rpad(to_char(a.col * b.col), 2, ' ') as res
from x a, x b
where b.col <= a.col)
select * from ( select col_a ,col_b,res from y) pivot ( max(res) for col_b in (1,2,3,4,5,6,7,8,9)) order by 1