No soy experto en SQL, pero usando una expresión
Case en el
Order By podría bastar. Hice esta pequeña prueba con una de mis tablas y funcionó:
Código SQL
[-]Select ID, Fecha, FechaEjecucion From OrdenTrabajo
Order By
Case
When Fecha < FechaEjecucion Then Fecha
Else FechaEjecucion
End
Como FechaEjecucion puede ser Null, añadiendo "Nulls First", hacemos que la consulta traiga primero los registros que tienen vacío ese campo:
Código SQL
[-]
Select ID, Fecha, FechaEjecucion From OrdenTrabajo
Order By
Case
When Fecha < FechaEjecucion Then Fecha
Else FechaEjecucion
End Nulls First
En tu caso el
Case involucraría tres campos. Sería un poco más grande, pero nada del otro mundo.