With this query, you have the values of "Start" and "End" appear to the side, as columns, and so you can find out which have their respective stages recorded or not:
SELECT L.lote, Inicio, Fin
FROM lote L
LEFT JOIN (SELECT lote, etapa AS Inicio FROM lote WHERE etapa = 'Inicio') ini ON L.lote = ini.lote
LEFT JOIN (SELECT lote, etapa AS Fin FROM lote WHERE etapa = 'Fin') fin ON L.lote = fin.lote
GROUP BY L.lote
The result of this is something like:
lote Inicio Fin
------------------------
t-001 Inicio Fin
t-002 Inicio (null)
This I tried on SQLFiddle .
Already playing with the same query, you can do the where
you need, and in fact manipulate the value of the "columns" Start and End (in my example, the real values that the column "stage" brings, but you for example, you could give it a 1, as to make it more "Boolean", etc.: p).