eso no es cambiar la estructura de tu tabla, solo estas almacenandola de manera diferente, tu problema se resuelve con:
Código SQL:
Ver originalCREATE TABLE #temp
(
nombre VARCHAR(20),
apellido VARCHAR(20),
fecha datetime,
id VARCHAR(20)
)
INSERT INTO #temp VALUES ('Jose','Perez','12-02-1960','PER3014')
INSERT INTO #temp VALUES ('Jose','Perez','12-02-1960','PER5471')
INSERT INTO #temp VALUES ('Maria','Lopez','10-04-1950','PER1047')
INSERT INTO #temp VALUES ('Maria','Lopez','10-05-1950','PER3472')
SELECT t1.nombre,t1.apellido,t1.fecha,t2.id AS idperprincipal,t1.id idpersecundario FROM(
SELECT *,ROW_NUMBER() OVER(partition BY nombre,apellido ORDER BY nombre) AS rn FROM #temp) AS t1
LEFT JOIN (SELECT *,ROW_NUMBER() OVER(partition BY nombre,apellido ORDER BY nombre) AS rn FROM #temp) AS t2 ON (t1.nombre=t2.nombre AND t1.apellido=t2.apellido AND t1.rn=t2.rn+1)
WHERE t2.nombre IS NOT NULL
saludos compa