It is the evaluate
So clearly I can't see your data set or report so this is a guess.
Usually dupes are created by a required join.
Usually in each table in the join there is a Primary key or seeded field that is a unique value for each row in that table.
Change your evaluate on to use the 'correct' primary key field
You do not need to display it in the report to use it.
You can display it in the details temporarily to 'see' what you are doing or if it is the 'correct' value to use as your evalaute condition then remove it or hide it for your final report.
If this does not resolve it for you please post some sample data to see if there is another solution.
Edited by DBlank - 02 Apr 2014 at 11:26am