Buenas a todos,
Os escribo después de mucho buscar a ver si podéis iluminarme con mi problema. Lo intentaré exponer lo mejor posible, si necesitarais otra información me indicáis.
Dada la siguiente tabla de ejemplo;
TABLAMOVIMIENTOS:
Cuenta--------Movimiento---Cantidad----Articulo
Empresa 1------Entrada---------3-----------X
Empresa 1------Entrada---------7-----------X
Empresa 1------Salida-----------5-----------X
Empresa 1------Entrada---------6-----------Y
Empresa 1------Salida-----------3-----------Y
Empresa 2------Entrada---------4-----------X
Empresa 2------Entrada---------4-----------X
Empresa 2------Salida-----------3-----------X
Empresa 2------Entrada---------5-----------Y
Empresa 2------Salida-----------1-----------Y
Necesito realizar una sentencia SQL que me muestre el Total de cantidades restando de Entradas-Salidas y agrupadas por Cuenta según un artículo dado. Por ejemplo,
Si lo hiciera para el artículo X, busco el siguiente resultado:
Total Artículos X empresa 1 =3+7-5 = 5
Total Artículos X empresa 2 = 4+4-3 = 5
Lo mismo si hiciera la búsqueda para el artículo Y:
Total Artículos Y empresa 1 = 6-3 = 3
Total Artículos Y empresa 2 = 5-1 = 4
Hasta ahora, he llegado a la siguiente sentencia SQL:
Código Delphi
[-]with datamodule1.AQ_Movimientos do
Begin
Close;
SQL.Clear;
SQL.Add('Select Cuenta, ((SELECT SUM(Cantidad) from TablaMovimientos WHERE Articulo= "Entrada") - ');
SQL.Add('(SELECT SUM(Cantidad) from TablaMovimientos WHERE Articulo= "Salida")) AS TOTAL');
SQL.Add('FROM TablaMovimientos WHERE articulo =:referencia and tipoRegistro = "Entrada" group by Cuenta');
Parameters.ParamByName('referencia').Value:=Edit_Artículo.text;
OPEN;
End;
Tras ejecutarla no da error, pero el resultado no es el que quiero, para la tabla anterior me da siempre lo siguiente (sea cual sea al artículo), hace la suma-resta de toda la tabla y me da un totalizado por cuentas:
Si lo hago para un artículo X:
Total Artículos X empresa 1 = 3+7-5 +4+4-3 = 10
Total Artículos X empresa 2 = 3+7-5 +4+4-3 = 10
Y si lo hago para un artículo Y:
Total Artículos Y empresa 1 = 6-3+5-1 = 7
Total Artículos Y empresa 2 = 5-1+6-3 = 7
También he probado la misma sentencia añadiendo el parámetro artículo el la suma, pero en ese caso, el resultado de la sentencia es ninguno:
Código Delphi
[-]with datamodule1.AQ_Movimientos do
Begin
Close;
SQL.Clear;
SQL.Add('Select Cuenta, ((SELECT SUM(Cantidad) from TablaMovimientos WHERE Articulo= "Entrada") - ');
SQL.Add('(SELECT SUM(Cantidad) from TablaMovimientos WHERE Articulo= "Salida")) AS TOTAL');
SQL.Add('FROM TablaMovimientos WHERE articulo =:referencia and tipoRegistro = "Entrada" group by Cuenta');
Parameters.ParamByName('referencia').Value:=Edit_Artículo.text;
OPEN;
End;
Alguna idea para conseguir lo que busco?!?!
Utilizo delphi XE2
Gracias por adelantado!!!