Não ficou muito claro o que você precisa..
Da forma que está, a única diferença entre as duas queries é que uma mostra o SUM do campo tab3.qtd... todas as demais condições estão iguais..
Você queria o que exatamente? Mostrar duas vezes cada linha, uma com o sum e outra sem?
Se for o caso, basta adicionar uma coluna null na primeira consulta e usar o union all:
Selecionar tudo
select z.cod, l.nom, count(s.cod), to_number(null) sum_x_qtd
from tab1 z, tab2 l, tab3 s
where s.codz = z.cod
and s.codl = l.cod
group by z.cod, l.nom
union all
select z.cod, l.nom, count(x.cod), sum(x.qtd) sum_x_qtd
from tab1 z, tab2 l, tab3 x
where x.codz = z.cod
and x.codl = l.cod
group by z.cod, l.nom
;
ou lendo as tabelas apenas uma vez:
Selecionar tudo
select a.cod, a.nom, a.count_x_cod, decode( d.lvl, 1, null, a.sum_x_qtd ) sum_x_qtd
from
(
select z.cod, l.nom, count(x.cod) count_x_cod, sum(x.qtd) sum_x_qtd
from tab1 z, tab2 l, tab3 x
where x.codz = z.cod
and x.codl = l.cod
group by z.cod, l.nom
) a
, (select level lvl from dual connect by level <= 2) d
;