REGEXP_SUBSTR +listagg结合子查询 高效获取优先级别最高的价格

昨天推敲出了一段值得记录的代码.可以解决oracle子查询 不能order by 去第一个的问题.对于初学者知识点较多.

select nvl(REGEXP_SUBSTR((select listagg(to_char(sg.CUSTOM_COST,'fm9999999990.00'), ',') within GROUP(ORDER BY s.PRICE_PRIORITY desc)
                             from store_goods sg
                             left join store s
                               on s.id = sg.relation_store_id
                            where sg.goods_sku = i.sku),'[^,]+',1),
             g.custom_cost) custom_cost,i.sku
from ORDER_ITEMS i
left join goods g
on g.goods_sku = i.sku

有一定的技巧性.当然如果熟悉REGEXP_SUBSTR 还可以实现top priority 正则表达式也可以用  \d+(\.\d+)?

REGEXP_SUBSTR(string,' \d+(\.\d+)?',1,n) n是第几次出现的位置.默认为1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章