Hola, utilizo Firebird 2.1, yo creo que esto se debería hacer con un GROUP BY pero no puedo,
gracias de antemano
Quiero saber en que últimos movimientos está involucrada la oficina 1
-- Agrego un par de valores para tener con que hacer la prueba
/* CREO UNA TABLA */
CREATE TABLE MOVIMIENTOS (
MOV_ID INTEGER NOT NULL, -- id de esta tabla
OFI_ID INTEGER NOT NULL, -- id de la tabla OFICINAS
MOV_FECHA CHAR(8) NOT NULL, -- fecha del movimiento
ENT_ID INTEGER NOT NULL -- id de la tabla ENTRADAS
);
-- con 2 movimientos para cada entrada ENT_ID 40, 41 y 42
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(1, 1, '20081101',40);
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(2, 2, '20081102',40);
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(3, 1, '20081103',41);
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(4, 2, '20081104',41);
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(5, 2, '20081105',42);
INSERT INTO movimientos (MOV_ID, OFI_ID, MOV_FECHA,ENT_ID) VALUES
(6, 1, '20081106',42);
yo quiero saber en que últimos movimientos está involucrada la oficina 1
la salida debería ser
ENT_ID-FECHA----OFI_ID MOV_ID
42------20081106--1-----6
y para la oficina 2
ENT_ID--FECHA---OFI_ID MOV_ID
40------20081102--2-----2
41------20081104--2-----4
-- mi problema es que no puedo mostrar todos los campos que deseo, si hago
SELECT M.ENT_ID, max(M.MOV_FECHA) FECHA FROM MOVIMIENTOS M GROUP BY m.ENT_ID;
obtengo
ENT_ID-----FECHA
40---------20081102
41---------20081104
42---------20081106
esto está correcto, pero necesito poder ver tambien la oficina y me dá error cuando le agrego el campo OFI_ID
SELECT M.ENT_ID, max(M.MOV_FECHA) FECHA, M.OFI_ID FROM MOVIMIENTOS M GROUP BY m.ENT_ID;
si agrego el campo tambien en el GROUP BY anda pero no es la consulta que yo quiero ya que me devuleve todo
SELECT M.ENT_ID, max(M.MOV_FECHA) FECHA, M.OFI_ID FROM MOVIMIENTOS M GROUP BY m.ENT_ID, M.OFI_ID;
gracias de antemano