Ver Mensaje Individual
  #4  
Antiguo Hace 1 Semana
emailx45 emailx45 is offline
Miembro
 
Registrado: abr 2025
Posts: 22
Reputación: 0
emailx45 Va por buen camino
Thumbs up

Para obtener un resumen de los valores, ¡debes establecer un orden acorde con el resultado que esperas obtener!
Por ejemplo, supongamos que deseas conocer el valor resultante de cada día de ventas:
a) agrupar e ordenar la columna de la fecha de venta;
b) indicar el campo o los campos que se utilizarán para realizar la suma.

De lo contrario, la función de agregado (SUM) no tendría un criterio para efectuar la suma de los valores, ¿entiendes?

Código SQL [-]
SELECT 
    Data,
    SUM(CASE WHEN Tipo = 'DEB' THEN Valor ELSE 0 END) AS TotalDebito,   // TIPO = DEB ou CRE abajo
    SUM(CASE WHEN Tipo = 'CRE' THEN Valor ELSE 0 END) AS TotalCredito
FROM (
    SELECT Data, 'DEB' AS Tipo, Valor FROM TableDEB
    UNION ALL
    SELECT Data, 'CRE' AS Tipo, Valor FROM TableCRE
) AS Movimentacoes
GROUP BY Data
ORDER BY Data;


Cómo funciona:
UNION ALL interno: Combina todos los registros de débitos y créditos, añadiendo una columna virtual Tipo ('DEB' o 'CRE') para identificar el origen de cada valor.

SUM(CASE ... END): Separa los valores de forma condicional según la fecha, creando columnas de subtotal independientes para débitos y créditos en cada día.

GROUP BY Fecha y ORDER BY: Agrupa y ordena cronológicamente por fecha, generando el informe contable diario.

Suma final: En su informe (por ejemplo, en Delphi/FireDAC), basta con añadir un pie de página (utilizando TClientDataSet o TFDQuery con agregados, o bandas de informe) que sume las columnas TotalDebito y TotalCredito.

Última edición por emailx45 fecha: Hace 1 Semana a las 21:04:38.
Responder Con Cita