The rows are not distinct. For a distinct to remove a row all values must be identical - including the numbers.
What you may want is a group by in the load script, something like this:
CONCAT(DISTINCT Name, ', ') as Names,
SUM(Score) as Score
FROM YourDataSource.qvd (qvd)
GROUP BY ID
However, in QlikView (and Sense) you don't need to do this. Simply load the table without doing a distinct and then create a table with ID as a dimension and Sum(Score) as the expression and you will get three rows with a Score of 19 for the ID JS.
Looking at the data though... it looks like the two JS IDs are actually two different individuals, so probably should be reported separately.
Or maybe I'm missing the point, and what you need to do is simply replace a COUNT(ID) statement with COUNT(DISTINCT ID) in the front end.