Prueba con esto:
Código SQL
[-]
SELECT i_cod_1, i_cod_2, FECHA2, i_cod_3, i_cod_4, FECHA1
FROM X
WHERE (FECHA1 IS NULL)
UNION ALL
SELECT i_cod_1, i_cod_2, FECHA2, i_cod_3, i_cod_4, FECHA1
FROM TUTABLA AS X_1
WHERE (FECHA1 IS NOT NULL)
Esto funciona por lo menos en sql server, esto es lo que resulta:
NULL NULL 01/01/2009 12:00:00 a.m. NULL NULL NULL
NULL NULL 03/01/2009 12:00:00 a.m. NULL NULL NULL
NULL NULL 02/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m.
NULL NULL 04/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m.
NULL NULL 05/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m.
NULL NULL 06/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m.
NULL NULL 07/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m.
NULL NULL 08/01/2009 12:00:00 a.m. NULL NULL 20/01/2009 12:00:00 a.m.
NULL NULL 09/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m.
NULL NULL 10/01/2009 12:00:00 a.m. NULL NULL 15/01/2009 12:00:00 a.m.
Saludos