Buenas:
Que pena me di cuenta que la información que made estaba incompleta.
1. El motor de la Base es FireBird
2. Lo que deseo realizar es tener en un solo registros las ventas, la cantidad de ventas, el descuento y la cantidad de descuento.
Código:
SELECT FECHAVENTA, CAJA, CODIGOCAJERO, TIPOARTICULO,
SUM(CANTIDADDESCUENTO) AS CANTIDADDESCUENTO,
SUM(DESCUENTO) AS DESCUENTO,
SUM(CANTIDADVENTAS) AS CANTIDADVENTAS,
SUM(VENTAS) AS VENTAS
FROM
(
SELECT D.FECHAVENTA, C.NOMBRE AS CAJA, D.CODIGOCAJERO, T.CODIGO||T.NOMBRE AS TIPOARTICULO,
0 AS CANTIDADDESCUENTO,
0.0 AS DESCUENTO,
COUNT(*) AS CANTIDADVENTAS,
SUM(D.CANTIDAD*D.PRECIOUNITARIO) AS VENTAS
FROM DetalleEncabezado D, CAJA C, TIPOARTICULO T
WHERE (D.FECHAVENTA='07/08/04')
AND (C.CODIGO=D.CODIGOCAJA)
AND (T.CODIGO=D.CODIGOTIPOARTICULO)
GROUP BY D.FECHAVENTA, C.NOMBRE, D.CODIGOCAJERO, T.CODIGO,T.NOMBRE
UNION
SELECT D.FECHAVENTA, C.NOMBRE AS CAJA, D.CODIGOCAJERO, T.CODIGO||T.NOMBRE AS TIPOARTICULO,
COUNT(*) AS CANTIDADDESCUENTO,
SUM(( (D.CANTIDAD*D.PRECIOUNITARIO)*(D.Descuento/100))+( (D.CANTIDAD*D.PRECIOUNITARIO)- (D.CANTIDAD*D.PRECIOUNITARIO*(D.Descuento/100)))*(D.Descuentoencabezado/100)) AS DESCUENTO,
0 AS CANTIDADVENTAS,
0.0 AS VENTAS
FROM DetalleEncabezado D, CAJA C, TIPOARTICULO T
WHERE (D.FECHAVENTA='07/08/04')
AND (C.CODIGO=D.CODIGOCAJA)
AND (T.CODIGO=D.CODIGOTIPOARTICULO)
AND ((D.Descuento > 0) OR (D.descuentoencabezado>0))
GROUP BY D.FECHAVENTA, C.NOMBRE, D.CODIGOCAJERO, T.CODIGO,T.NOMBRE
)
GROUP BY FECHAVENTA, CAJA, CODIGOCAJERO, TIPOARTICULO
Pense que con el anterior codigo tenia solucionada el inconveniente y no me presenta error de sql y me dice que es en la linea 10 en el caracter 1, es decir en el primer SELECT de la union.
Gracias por la colaboración
Rogerio