Ver Mensaje Individual
  #16  
Antiguo 09-12-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Reputación: 19
olbeup Va camino a la fama
Cita:
Empezado por marcial Ver Mensaje
Hola a todos:
Aunque tengo que agradecer a todos vuestro aporte, tengo que decirle a Olbeup que el resultado no es el deseado. Tiene que ser un matiz que no doy con el. Os adjunto el resultado con el dódigo de Olbeup para ver si se puede retocar. La Imagen de la izda es el fichero completo de lineas y la de la derecha deberían ser los codigos comprados por el cliente 5191 y deberían ser sólo cuatro lineas:

BACON AHUMADO precio: 3,42 Fecha: 05.12.2012 Documento: 60
JAMON FRESCO SIN HUESO precio: 3,25 Fecha: 05.12.2012 Documento: 61 (En el docmto hay dos apuntes al Jamon)
CODILLO DE CERDO precio: 2,40 Fecha: 05.12.2012 Documento: 61
PANCETA FRESCA CON HUESO precio: 2,22 Fecha: 05.12.2012 Documento: 61

el código utilizado es:
Código Delphi [-]Lineas1.Active := True;
SQL1 := 'SELECT DESCRIPCION ,DOCUMENTO ,CANTIDAD ,PRECIOVENTA , FECHA ,CODCLIENTE, SERIE, ARTICULO, HORAGRABACION ' +
'FROM Lineas ' +
'WHERE FECHA IN(SELECT MAX(FECHA) FROM Lineas GROUP BY DESCRIPCION, CODCLIENTE) ' +
'AND CODCLIENTE = ''' + Edit4.Text + '''';
CONSULTAQUERYLINEAS;




El programa de Albaranes tiene un DBGrid a la izquierda con el pedido que me va haciendo ESE dia el cliente(sobre el Fichero LINEAS), y el DBGrid de la derecha debe contener TODOS los articulos que se ha llevado antes para que yo los vea y se los vaya recordando por telefono con su último precio.(Tambien sobre Fichero LINEAS). Por eso he puesto otro dataset Lineas1 para que al ejecutar el SQL me deje correctos los dos DBGRID (uno sobre cada dataset) que en realidad son los dos sobre el mismo fichero.

Gracias a todos por vuestro tiempo y esfuerzo.
Hola marcial,

Efectivamente tienes razón, y he realizado otra SQL que hace lo que pide.

Código SQL [-]
SELECT
    L1.ARTICULO
    ,L1.DESCRIPCION
    ,L1.CODCLIENTE
    ,(SELECT
          MAX(FECHA)
        FROM Lineas
        WHERE ARTICULO = L1.ARTICULO
     ) FECHAULTIMA
    ,(SELECT TOP 1
          PRECIOVENTA
        FROM Lineas
        WHERE ARTICULO = L1.ARTICULO
        ORDER BY FECHA DESC
     ) ULTIMOPRECIO
    ,(SELECT TOP 1
          HORAGRABACION
        FROM Lineas
        WHERE ARTICULO = L1.ARTICULO
        ORDER BY FECHA DESC
     ) HORAGRAB
    ,(SELECT TOP 1
          DOCUMENTO
        FROM Lineas
        WHERE ARTICULO = L1.ARTICULO
        ORDER BY FECHA DESC
     ) DOC
    ,(SELECT TOP 1
          CANTIDAD
        FROM Lineas
        WHERE ARTICULO = L1.ARTICULO
        ORDER BY FECHA DESC
     ) CANT
  FROM Lineas AS L1
  WHERE L1.CODCLIENTE = 5195
  GROUP BY L1.ARTICULO, L1.DESCRIPCION, L1.CODCLIENTE
Un saludo

P.D.: Esta vez sí, esto es SQL SERVER en el firebird tendrá que cambir el TOP por no se cual
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 09-12-2012 a las 03:52:56.
Responder Con Cita