Subtotal usando ROLLUP - Oracle

Amigos, como posso usar a função ROLLUP no oracle substituindo querys com union all aonde a codição de uma query anula a outra ? E no campo de retorno uma query apenas pega o valor, a outra query existe uma pequena lógica.

Exemplo :

identar texto pre-formatado em 4 espaços
SELECT 	DT_MOV,
	COD_BLOCO, 
	(select sum(x.peso) 
		from pasagem_bruto x 
		where (x.id = m.id)
		  and (x.emp_id_empresa = m.emp_id_empresa) <------------------- Essa coluna de retorno tem uma logica, a query de baixo não
		  and (x.data_pb <= m.data_p)
		) as peso_liquido
		FROM OS_PESAGENS
		WHERE COD_EMPRESA = 1
			AND SAFRA in (2016, 2017)   <--------------------- Condição da query de cima vai contra a codição da query de baixo  
GROUP BY DT_MOV, COD_BLOCO   
UNION
SELECT 	DT_MOV,
		COD_BLOCO,
		SUM(PESO_BRUTO - PESO_TARA) PESO
			FROM OS_PESAGENS
			WHERE COD_EMPRESA = 1
				AND SAFRA not in (2016, 2017)  <--------------------- Condição query de baixo contra condição query de cima
GROUP BY DT_MOV