Why refuse the approach to the request. I know this is a little complicated, and I hope someone can work on it to improve it, but working on it in my free time, I was able to survive a day of calls ...
Here is SQLFidlle
SELECT Table1.id, Table1.column1, Table1.column2, max(nvl(tl,0)) RESULT FROM ( SELECT id, column1, column2, LEVEL l, decode(LEVEL, 1, substr(column1, 1, instr(column1,' ', 1, LEVEL) -1), substr(column1, 1, (instr(column1,' ', 1, LEVEL ))) ) sub1, decode(LEVEL, 1, substr(column2, 1, instr(column2,' ', 1, LEVEL) -1), substr(column2, 1, (instr(column2,' ', 1, LEVEL ))) ) sub2 FROM (SELECT id, column1 || ' ' column1, column2 || ' ' column2 FROM Table1) WHERE decode(LEVEL, 1, substr(column1, 1, instr(column1,' ', 1, LEVEL) -1), substr(column1, 1, (instr(column1,' ', 1, LEVEL ))) ) = decode(LEVEL, 1, substr(column2, 1, instr(column2,' ', 1, LEVEL) -1), substr(column2, 1, (instr(column2,' ', 1, LEVEL ))) ) START WITH column1 IS NOT NULL CONNECT BY instr(column1,' ', 1, LEVEL) > 0 ) t RIGHT OUTER JOIN Table1 ON trim(t.column1) = Table1.column1 AND trim(t.column2) = Table1.column2 AND t.id = Table1.id GROUP BY Table1.id, Table1.column1, Table1.column2 ORDER BY max(nvl(tl,0)) DESC