方法一 :缺点字符串太长会报错
SQL:
select LINEID, AREAID, LINENAME, CARCODE, CARSIM, LINENOTES, LINESORTINDEX, AREANAME, AREASORTINDEX, '[' || MAPPOINTS || ']' as MAPPOINTS from(
select LINEID, LINE.AREAID, LINENAME, CARCODE, CARSIM, LINENOTES, LINESORTINDEX, areaname, areasortindex, (
select wm_concat('{ \"LPOINTSORTINDEX\":' || LPOINTSORTINDEX || ' ,\"lpointid\": ' || lpointid || ',\"lng\":' || lng || ',\"Lat\":' || Lat || '}') mapPoint
from zhdb_ods.ODS_HJZL_KM_CARLINEPOINT points
where points.LINEID = LINE.LINEID
and Lng is not null and Lat is not null
group by lineID
) mapPoints
from zhdb_ods.ODS_HJZL_KM_CARLINE line
left join zhdb_ods.ODS_HJZL_KM_CARAREA area on line.AreaID = area.AREAID ) orig
效果:
方法二
SQL:
select LINEID, AREAID, LINENAME, CARCODE, CARSIM, LINENOTES, LINESORTINDEX, AREANAME, AREASORTINDEX, '[' || MAPPOINTS || ']' as MAPPOINTS from(
select LINEID, LINE.AREAID, LINENAME, CARCODE, CARSIM, LINENOTES, LINESORTINDEX, areaname, areasortindex, (
select XMLAGG(XMLELEMENT(E, '{ \"LPOINTSORTINDEX\":' || LPOINTSORTINDEX || ' ,\"LPOINTNAMES\": ' || to_char(LPOINTNAMES) || ',\"lpointid\": ' || lpointid || ',\"lng\":' || lng || ',\"Lat\":' || Lat || '}')).EXTRACT('//text()').getclobval() codes from zhdb_ods.ODS_HJZL_KM_CARLINEPOINT points
where points.LINEID = LINE.LINEID
and Lng is not null and Lat is not null
group by lineID
) mapPoints
from zhdb_ods.ODS_HJZL_KM_CARLINE line
left join zhdb_ods.ODS_HJZL_KM_CARAREA area on line.AreaID = area.AREAID ) orig
效果:
点开一个 CLOB 的效果 :