I try to get result of my query in natural order, but have a fail.
create table Tab2 (id int, F1 varchar(100));
insert into Tab2 values(1, '10,56,657,34,767,71');
insert into Tab2 values(3, '1,5487,27,9');
insert into Tab2 values(4, '11,13,37,2');
insert into Tab2 values(2, '12,6,65,8,67,22,70,5');
WITH RECURSIVE etc (id, DataItem, F1) AS (
(SELECT id,
LEFT(F1, strpos(concat(F1, ','), ',')-1) AS Part,
overlay(F1 placing '' from 1 for strpos(concat(F1, ','),',')) AS Remainder
FROM Tab2
--ORDER BY Remainder
)
UNION ALL
(SELECT id,
LEFT(F1, strpos(concat(F1, ','), ',')-1),
overlay(F1 placing '' from 1 for strpos(concat(F1, ','),','))
FROM etc e
WHERE F1 > ''
--ORDER BY Dataitem
)
)
SELECT id, row_number() over(partition BY id ORDER BY id) num, DataItem from etc ORDER BY id;
http://sqlfiddle.com/#!15/b0ccc6/89/0
Where is my mistake?