昨天推敲出了一段值得记录的代码.可以解决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