Yo he probado una consulta chorra y me ha funcionado perfectamente con los paréntesis, es esta pero no creo que te sirva de mucho:
Código SQL
[-]select marca, sum(codigo) from
(
(select 'Blanco' marca,c.dni,s.codigo
from sys_conforta.cliente c, sys_conforta.solicitud s
where c.codigo=s.codigo_cliente and s.puesto_promocion=174 and c.dni is null)
union
(select 'Negro' marca,c.dni,s.codigo
from sys_conforta.cliente c, sys_conforta.solicitud s
where c.codigo=s.codigo_cliente and s.puesto_promocion=174 and c.dni is not null)
)
group by marca
En todo caso yo construiría tu consulta de este modo:
Código SQL
[-]SELECT a.ALMACEN, a.CODIGO, a.DESCRIPC, a.DESCRIPC, Avg(a.Expr1) AS PromedioDeExpr1
FROM
(
( SELECT alclaart.CODIGO, alclaart.DESCRIPC, alclaart.ALMACEN, alclaume.DESCRIPC,
(alpreart.IMPORTE/alpreart.EXISTENCIA) AS Expr1
FROM alclaart, alpreart, alclaume
WHERE alclaart.ALMACEN="01" and alclaart.CODIGO=alpreart.CODIGO AND
alclaart.ALMACEN=alpreart.ALMACEN and alclaart.UMEDIDA_A= alclaume.COD_UM )
UNION
( SELECT alclaart.CODIGO, alclaart.DESCRIPC, alclaart.ALMACEN, alclaume.DESCRIPC,
(alpresec.IMPORTE/alpresec.EXISTENCIA) AS Expr1
FROM alclaart, alclaume, alpresec
WHERE alclaart.ALMACEN="01" and alclaart.UMEDIDA_A=alclaume.COD_UM and
alpresec.CODIGO=alclaart.CODIGO AND alclaart.ALMACEN= alpresec.ALMACEN )
) a
GROUP BY a.ALMACEN, a.CODIGO, a.DESCRIPC, a.DESCRIPC;