![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
#1
|
|||
|
|||
![]() 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 ![]() 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 |
#2
|
||||
|
||||
![]() Saludos.
Antes que nada trata de utilizar las etiquetas del foro para poner el código más legible (elegante). Podrías utilizar DESC en el Order By .
Y en caso de que quieras limitar la cantidad de registros sería
Espero te sirva de algo.
__________________
Gracias, Rolphy Reyes |
#3
|
|||
|
|||
Hola
Esto es un truco pero funciona Te enseñarar los ultimos movimientos fecha e id de movimiento de cada una de las oficinas Puede haber error de sintaxis, pero la idea es buscar un max de una select que es otro max y que esta ligada a la consulta madre
Saludos |
#4
|
|||
|
|||
gracias RolphyReyes pero da error.
gracias celades1 por ahí debe andar la cosa voy a seguir probando |
#5
|
|||
|
|||
![]() ![]() ![]() SELECT MOVIMIENTOS.MOV_ID, MOVIMIENTOS.OFI_ID, MOVIMIENTOS.MOV_FECHA, MOVIMIENTOS.ENT_ID FROM MOVIMIENTOS INNER JOIN (SELECT M.ENT_ID, Max(M.MOV_FECHA) AS MaxDeMOV_FECHA FROM MOVIMIENTOS AS M GROUP BY M.ENT_ID) Subconsulta ON (MOVIMIENTOS.MOV_FECHA = Subconsulta.MaxDeMOV_FECHA) AND (MOVIMIENTOS.ENT_ID = Subconsulta.ENT_ID) where ofi_id = 1 y si la quiero relacionar con otras tablas para obtener mas datos me quedó SELECT M1.MOV_ID, M1.OFI_ID, M1.MOV_FECHA, M1.ENT_ID , E.ENT_NUMERO, E.ENT_ANIO, E.TEM_ID, T.TEM_DESCRI FROM MOVIMIENTOS M1 INNER JOIN (SELECT M.ENT_ID, Max(M.MOV_FECHA) AS MaxDeMOV_FECHA FROM MOVIMIENTOS M GROUP BY M.ENT_ID) Subconsulta ON (M1.MOV_FECHA = Subconsulta.MaxDeMOV_FECHA) AND (M1.ENT_ID = Subconsulta.ENT_ID) INNER JOIN ENTRADAS E ON M1.ENT_ID = E.ENT_ID INNER JOIN TEMAS T ON E.TEM_ID = T.TEM_ID where ofi_id = 1 |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Group by en firebird | santiago14 | SQL | 7 | 05-09-2008 15:40:19 |
uso del Group By | esimon | SQL | 8 | 05-02-2008 18:14:10 |
Impresion de group header group footer | Manuel | Impresión | 3 | 11-11-2007 01:05:23 |
consultas anidadas: group by dentro otro group by | DobleSiete | SQL | 7 | 31-01-2005 14:59:31 |
Group Header, Detail y Footer Group en la misma pagina | MarcelRuz | Impresión | 0 | 20-04-2004 23:27:14 |
![]() |
|