Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2008
fcios fcios is offline
Miembro
 
Registrado: jul 2003
Posts: 108
Poder: 21
fcios Va por buen camino
Question Group By

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
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 11:51:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi