Использование SELECT DISTINCT будет работать для вас, но лучшим решением будет изменение структуры вашей базы данных.
Повторяющиеся записи могут привести к несогласованности данных. Например, представьте, что у вас два разных состояния в разных записях с одним и тем же TaskID. Какой из них будет прав?
Лучший дизайн будет включать что-то вроде таблицы задач, таблицы контактов и таблицы назначений следующим образом (поля в скобках - это PK):
Задачи: [TaskID], TaskPriority, Subject, Status, DueDate, Completed, StartDate, Owner, CategoryID, ContactID, ...
Контакт: [ID], имя, фамилия, адрес, номер телефона, ...
Назначение: [TaskID, ContactID]
Затем вы можете получить Задачи простым SELECT из таблиц Задач.
И всякий раз, когда вам нужно знать контакты, назначенные Задачам, вы должны делать это, используя предложение JOIN, например,
SELECT T.*, C.*
FROM TaskID as T
INNER JOIN Assignment as A
ON T.TaskID = A.TaskID
INNER JOIN Contac as C
ON A.ContactID = C.ID
или аналогичный. Вы можете фильтровать, сортировать или группировать результаты, используя всю мощность запросов SQL.