Eliminate duplicates in ListAgg (Oracle)
You can use regular expressions and regexp_replace to remove the duplicates after concatenation with listagg:

SELECT Num1, 
       RTRIM(
         REGEXP_REPLACE(
           (listagg(Num2,'-') WITHIN GROUP (ORDER BY Num2) OVER ()), 
           '([^-]*)(-\1)+($|-)', 
           '\1\3'),
         '-') Num2s 
FROM ListAggTest;


This could be tidier if Oracle's regex flavour supported lookahead or non-capturing groups, but it doesn't.  

However this solution does avoid scanning the source more than once.

DBFiddle here