When you get the duplicate dimension message then that often means the portlet has "dropped" rows returned from the query - the rows it has dropped are the ones that share a dimension with one of the rows that it has not dropped. To fix this, you just need to code the NSQL so that the dimension that you have defined will always be unique across the returned dataset - the message will then go away and you will see all the data that the query delivers.
(in Oracle you can use ROWNUM as the dimension to ensure it is unique)
[ You are doing the right thing by making the field that you want to multi-select upon one of the returned attributes ]