Eso suele pasar intentas buscar la solución en una dirección y te ofuscas y te complicas la vida. Lo mejor, borrar el chip y volver a plantear el problema.
Código:
select auxiliar, fecha,
if(opcion=1,
(select sum(debe) from tabla where id<=T.id),
(select sum(haber)
from tabla where id<=T.id)) as acumulado
from tabla T
Asi sería en Mysql, en SQL server, la instrucción if es de otra manera (iIF o algo así), mira la sintaxis exacta, pero la idea es esa. Es que yo uso mysql y la sintaxis de SQLServer ni idea.