Código SQL:
Ver originalCREATE TABLE #temp
(
codigo INT,
fecha datetime,
precio INT,
unidades INT
)
INSERT INTO #temp VALUES (1,getdate(),100,1)
INSERT INTO #temp VALUES (2,getdate(),100,1)
INSERT INTO #temp VALUES (3,NULL,100,1)
INSERT INTO #temp VALUES (4,NULL,100,1)
INSERT INTO #temp VALUES (5,getdate()+1,100,1)
INSERT INTO #temp VALUES (5,getdate(),100,1)
INSERT INTO #temp VALUES (6,getdate(),100,1)
INSERT INTO #temp VALUES (6,getdate()+2,100,1)
SELECT COUNT(codigo) total, codigo,fecha,precio,unidades FROM #temp WHERE fecha IS NULL GROUP BY codigo,fecha,precio,unidades HAVING COUNT(codigo)=1
SELECT t1.* FROM(
SELECT * FROM #temp WHERE codigo IN(
SELECT codigo FROM(
SELECT COUNT(codigo) AS total, codigo FROM #temp GROUP BY codigo HAVING COUNT(codigo)>1
) AS TABLE)
) t1
LEFT JOIN (SELECT MAX(fecha) AS m_fecha, codigo FROM #temp GROUP BY codigo) AS t2 ON (t1.codigo=t2.codigo AND t1.fecha=t2.m_fecha)
WHERE t2.m_fecha IS NOT NULL
usando algunos datos de ejemplo y la estructura que mencionas podria quedar algo como esto :P