参考 oracle11g行变列两种办法的比较:
方法1:优点是分析函数,缺点:返回log,低效,
select link_pid, replace(strs,',','|') all_forms
from
(select tlink_pid,
wmsyswm_concat(tform_of_way)
over(partition by tlink_pid order by tform_of_way ) strs,
row_number() over(partition by tlink_pid order by tform_of_way) RN,
count(1) over(partition by tlink_pid ) CNT
from rd_link_form t
) where RN=CNT
方法2:优点是高效,返回char,缺点:不是分析函数
select tlink_pid,
listagg(tform_of_way, '|')
within group (order by tform_of_way ) all_forms
from rd_link_form t
group by tlink_pid
listagg()需在112版本下才行
两种方法的比较:依link_pid去重后有23万的数据量,方法1的wmsyswm_concat用3小时看不到结果,方法2的listagg用80秒看到结果
【我以字典表user_tab_columns改写了上述SQL,如下,大家直接执行就行:】
方法1:
select table_name, replace(strs, ',', '|') all_forms
from (select ttable_name,
wmsyswm_concat(tCOLUMN_NAME) over(partition by ttable_name order by tCOLUMN_NAME) strs,
row_number() over(partition by ttable_name order by tCOLUMN_NAME) RN,
count(1) over(partition by ttable_name) CNT
from user_tab_columns t)
where RN = CNT
方法2:
select ttable_name,
listagg(tCOLUMN_NAME, '|')
within group (order by tCOLUMN_NAME ) all_forms
from user_tab_columns t
group by ttable_name
大家可以直接在自己的pl/sql中运行上述SQL
以上就是关于如何查询oracle数据库一周的数据全部的内容,包括:如何查询oracle数据库一周的数据、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)