Возможно, вы захотите что-то вроде следующего, но я не уверен, что это именно то, что вы ищете, так как я не знаю, где вводятся символы S и US в строке 'S, 3, TESTxxx, US'от:
WITH dat AS (SELECT 'INFOTECH' Class1, 'SECOSEEQ' Class2, 'TEST123' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'SECOSEEQ' Class2, 'TEST124' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'SECOSEEQ' Class2, 'TEST125' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'SOSE' Class2, 'TEST126' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'SOSE' Class2, 'TEST127' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'SOSE' Class2, 'TEST128' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'TEHAEQ' Class2, 'TEST129' Asset FROM dual
UNION ALL
SELECT 'INFOTECH' Class1, 'TEHAEQ' Class2, 'TEST130' Asset FROM dual
UNION ALL
SELECT 'MATERIAL' Class1, 'ALUMINUM' Class2, 'TEST131' Asset FROM dual
UNION ALL
SELECT 'MATERIAL' Class1, 'ALUMINUM' Class2, 'TEST132' Asset FROM dual
UNION ALL
SELECT 'MATERIAL' Class1, 'CHEMICAL' Class2, 'TEST133' Asset FROM dual
UNION ALL
SELECT 'MATERIAL' Class1, 'CHEMICAL' Class2, 'TEST134' Asset FROM dual)
SELECT CASE WHEN class2 IS NULL
THEN '1,'||class1
WHEN asset IS NULL
THEN '2,'||class2
ELSE 'S,3,'||asset||',US'
END
FROM dat
GROUP BY class1, ROLLUP(class2,asset)
ORDER BY class1, class2 nulls first, asset nulls first