我擁有的數據如下。將兩行連接成1個oracle,
> ID Somefield
00001 test1
00001s test2
00002 test3
00002g test4
我想基於ID 最終結果的前五個數字的兩線來連接在一起,將
00001 test1,test2
00002 test3,test4
我能夠在11g中,但我與LISTAGG功能來做到這一點必須通過where子句並查看ID字段的長度。
我試圖創建一個功能
CREATE OR REPLACE FUNCTION row_concat_id(id IN VARCHAR2,
currentfield IN VARCHAR2)
RETURN VARCHAR2
AS
CURSOR c1 IS
SELECT listagg(currentfield, ',') within GROUP(ORDER BY currentfield)
FROM mytable
WHERE id LIKE (id + '%')
--where length(ID) > 5
GROUP BY subscriberid;
concatfield VARCHAR2(2000);
BEGIN
dbms_output.put_line(id);
dbms_output.put_line(currentfield);
OPEN c1;
FETCH c1 INTO concatfield;
CLOSE c1;
RETURN concatfield;
END row_concat_id;
它只會工作,如果我硬編碼標識加入功能where子句
where id like(id + '%')
像這樣
where id like(00001%')
任何幫助這會很好。
你是怎麼做到的'+'能串聯在Oracle 11g中的字符串? – diziaq