Похоже, вы хотите получить Distinct на один столбец.
В надежде использовать SQL Server 2005 или выше
Select First_Name,Last_Name,P_Id
FROM
(
Select First_Name,Last_Name,P_Id
Row_Number() Over (Partition By P_Id Order By First_Name) As RNum
From Table1) T1
WHERE T1.RNum = 1
Идея состоит в том, чтобы назначить отдельный номер строки в группе PID, а затем получить номер с RowNumber = 1
Для SQl Server 2000
Select Distinct First_Name,Last_Name,P_ID
From Table1 T1
INNER JOIN
(
Select Min(First_Name) First_Name,P_ID
From Table1 T1
Group By P_ID
) T2 ON T1.P_ID = T2.P_ID AND T1.First_Name = T2.First_Name
Примечание: в случае, когда две строки имеют одинаковые P_ID и First_Name и Different Last_Name, он вернет 2 строки. Я проверяю это.
Другой способ создать временную таблицу с помощью столбца идентификаторов. Тогда вместо использования min (First_Name) во внутреннем запросе мы будем использовать группу min (Idenity) по P_ID, а в соединении мы будем использовать P_ID и identity для соединения.