Código SQL:
Ver originalCREATE TABLE #temp
(
codigo INT,
precio_unitario INT,
fecha_desactivacion datetime
)
INSERT INTO #temp VALUES (701,50000,NULL)
INSERT INTO #temp VALUES (701,45000,'09/15/2011')
INSERT INTO #temp VALUES (702,120000,NULL)
INSERT INTO #temp VALUES (702,110000,'09/16/2011')
INSERT INTO #temp VALUES (701,80000,NULL)
INSERT INTO #temp VALUES (701,25000,'09/15/2011')
INSERT INTO #temp VALUES (702,200000,NULL)
INSERT INTO #temp VALUES (702,110000,'09/16/2011')
SELECT * FROM (
SELECT t2.precio_unitario-t1.precio_unitario AS resultado FROM #temp AS t1
LEFT JOIN #temp AS t2 ON (t1.codigo<>t2.codigo)
WHERE t1.fecha_desactivacion IS NULL AND t2.fecha_desactivacion IS NULL
) t1 WHERE resultado>0
Resultado
70000
40000
150000
120000
Aqui veo algo raro, si lo haces asi como mencionas y en el ejemplo que puse tenemos que 701 tiene 2 valores con fecha null y 702 tambien por lo que haria las operaciones mas veces asi esta bien???
Saludos!