a lo que entiendo quieres separar por nombre verdad?? entonces con row_number seria algo asi
select dato1,dato2,dato3, nombre, row_number() over(partition by nombre order by nombre asc) as rn from tabla
en este caso para adaptarlo a tu problema seria:
Código SQL:
Ver originalDECLARE
@Fecha DATE,@term INT=NULL,@depto INT=NULL
SELECT * FROM (
SELECT p.id_ref_externa AS 'Id_personal',
t.descripcion AS 'Terminal',
d.desc_depto AS 'Departamento',
p.nombre AS 'Nombre',
ROW_NUMBER() OVER(partition BY p.nombre ORDER BY p.nombre) AS rn,
CONVERT(TIME,h.hora_entrada) AS 'Hora-Entrada'
FROM corporativodb.dbo.corp_personal p
INNER JOIN corporativodb.dbo.corp_terminales t ON t.id=p.id_terminal
INNER JOIN corporativodb.dbo.corp_depto d ON d.id_depto=p.id_depto
INNER JOIN corporativodb.dbo.corp_horarios h ON h.id_grupo_horario=p.id_grupo_horario
WHERE NOT EXISTS
(SELECT * FROM corporativodb.dbo.corp_asistencia a WHERE a.id_personal=p.id_personal AND CONVERT(DATE,fecha_asistencia,108)=@Fecha)
AND NOT EXISTS
(SELECT * FROM transmaquiladb.dbo.tm_transfer_registroAsistencia ab WHERE ab.id_personal=p.id_ref_externa AND CONVERT(DATE,AB.fechahora_Evento,108)=@Fecha)
AND
((@term IS NULL) OR (t.id=@term))
AND
((@depto IS NULL)OR(d.id_depto=@depto))
AND
p.estatus_personal=1
AND
p.id_categoria IS NULL
) t1 WHERE rn=1
ORDER BY t1.id_terminal
saludos!