FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con una consulta SQL
Que tal a todos
Mi problema es el el siguiente: Tengo una tabla con los siguientes campos Orden,Bulto,Operacion,Fecha_Recepcion,Hora_Recepcion y tengo los siguientes datos 1,1,33,15/08/2005,10 1,1,38,15/08/2005,12 1,2,25,13/08/2005,12 1,2,198,14/08/2005,10 Quiero obtener el registro con mayor fecha_recepcion y hora_recepcion (ultimos dos campos)agrupado por los otros tres Orden, Bulto y Operacion Mi SQL es como sigue SELECT ORDEN,BULTO,OPERACION,MAX(FECHA_RECEPCION),MAX(HORA_RECEPCION) FROM TABLA GROUP BY ORDEN,BULTO,OPERACION pero de nada me sirve porque me regresa exactamente los mismos valores que la tabla original puesto que no debo agrupar por operacion solo por orden y bulto pero si quiero que en el resultado aparezca tambien la operacion. De antemano gracias y espero su ayuda. Espero haber sido claro. |
#2
|
||||
|
||||
Hola agova,
no entiendo muy bien cuál es el problema. Si haces esta sentencia: SELECT ORDEN,BULTO,OPERACION,MAX(FECHA_RECEPCION),MAX(HORA_RECEPCION) FROM TABLA GROUP BY ORDEN,BULTO,OPERACION te mostrará estos datos 1,1,33,15/08/2005,10 1,1,38,15/08/2005,12 1,2,25,13/08/2005,12 1,2,198,14/08/2005,10 Entiendo que quieres agrupar por orden y bulto y que aparezca la operación y los valores máximos de fecha y hora. En ese caso, para estos registros 1,1,33,15/08/2005,10 1,1,38,15/08/2005,12 ¿qué información te tiene que mostrar? Saludos
__________________
Más se perdió en la guerra... y volvieron cantando |
#3
|
|||
|
|||
Hola!
No se si he entendido bien tu problema, pero bueno, aqui te paso lo que creo que podrias hacer: Si haces la Select que tu propones, siempre te saldrán todos los registros, ya que agrupas por operacion y ésta es diferente en todos los registros!! Simplemente, quitándo del select y del groupby la Operación, te saldrán los siguientes datos 1;1;15/08/2005;12 1;2;14/08/2005;12 Que, segun lo que he entendido yo, son los que necesitas, no? La sentencia de SQL quedaría así: SELECT ORDEN,BULTO,MAX(FECHA_RECEPCION),MAX(HORA_RECEPCION) FROM TABLA GROUP BY ORDEN,BULTO Si necesitas el campo Operación te será imposible hacerlo, ya que ésta es diferente en cada registro, no puedes sacar la Operación con otra select, a partir de los datos que te proporciona esta?? Espero que te haya ayudado en algo saludos |
#4
|
|||
|
|||
Gracias a ambos por sus respuestas.
La informacion que necesito que me devuelva es: Orden, Bulto, Operacion, Maxima Fecha y Maxima Hora O sea: 1,1,33,15/08/2005,10 --> Este no porque la fecha es igual pero la hora es menor 1,1,38,15/08/2005,12 --> Este si porque es la max hora y max fecha de esta orden,bulto y operacion 1,2,25,13/08/2005,12 -->Este no 1,2,198,14/08/2005,10-->Este si Entonces la SQL debe devolver 1,1,33,15/08/2005,10 1,2,198,14/08/2005,10 pero necesito que aparezca la operacion también. Saludos y gracias. |
#5
|
|||
|
|||
Gracias Sabinajoa, he estado pensando en hacerlo como tu dices, olvidarme de la operacion y una vez obtendido el resultado en base a la maxima fecha y maxima hora sacar que operacion es pero no encuentro la forma de hacerlo, ¿podrías darme más pistas de cómo?
De antemano gracias. |
#6
|
||||
|
||||
Hola,
creo que esta consulta no te mostrará la información que deseas. Si tienes estos dos registros: 1,1,33,15/08/2005,10 1,1,33,14/08/2005,12 creo que te devolverá esto 1,1,33,15/08/2005,12 fijate que tienes el dia más grande y la hora más grande, pero no corresponden al mismo registro por lo cual esa operación no se ha realizado con los datos que has obtenido. No lo he probado, pero creo que es así. Saludos
__________________
Más se perdió en la guerra... y volvieron cantando |
#7
|
|||
|
|||
Gracias aom
Presisamente lo que escibes en el ejemplo es lo que necesito, solo tengo una duda dices que esta consulta pero ¿Cuál es esa consulta, que devolvera ese registro? ¡gracias¡ |
#8
|
||||
|
||||
Que tal agova, y si le haces asi???
Esto lo digo porque creo que que es campo opearción es unico, ¿cierto?, entonces con esto siempre tendras la fecha y hora mas recientes, espero haberme explicado. Saludos. Vicente López. |
#9
|
|||
|
|||
Gracias Chente, pero lo que necesito es que me de el registro con mayor fecha y mayor hora dentro de esa fecha y con esto si tengo tres registros
1,1,1,25/Ago/05,8 1,1,2,24/Ago/05,10 1,1,3,24/Ago/05,12 me debe regresar el registro con mayor fecha y hora o sea el primero y no uno combinado con el mayor de cada uno, o sea 1,1,3(Mayor operacion->3er registro),25/Ago/05(Max fecha->1er Registro),12(Mayor hora) saludos |
#11
|
||||
|
||||
Hola,
disculpa la consulta es esta: SELECT ORDEN,BULTO,OPERACION,MAX(FECHA_RECEPCION),MAX(HORA_RECEPCION) FROM TABLA GROUP BY ORDEN,BULTO,OPERACION Según lo que comentas (y si no he entendido mal ), esta consulta no te sirve porqué te mostrará la mayor hora y el mayor día, pero cogidos de registros diferentes con la misma operación. Saludos
__________________
Más se perdió en la guerra... y volvieron cantando |
#12
|
||||
|
||||
Hola,
prueba esta consulta: SELECT distinct tb.orden, tb.bulto, tb.operacion, (select max(fecha_recepcion) from tabla t where t.operacion=tb.operacion),(select max(hora_recepcion) from tabla t where t.operacion=tb.operacion) from tabla tb Saludos
__________________
Más se perdió en la guerra... y volvieron cantando |
#13
|
|||
|
|||
Gracias a ambos, ahora voy de salida pero el lunes los probare y les digo si funciona alguna de sus soluciones propuestas.
saludos y gracias. |
#14
|
|||
|
|||
hola disculpen q me meta pero es posible si es que entendi el problema de q tengas q apelar a query sincronicos, uno andiado en otro tomando parametros el interno del externo, mayormente todos los motores soportan esto desde paradox hasta los mas grandes (Oracle y Postgresql), y si lo probas es posible q access tambien.
select tb1.Orden,tb1.Bulto,tb1.Operacion,tb1.Fecha_Recepcion,tb1.Hora_Recepcion from tabla as tb1 where (tb1.Fecha_Recepcion,Hora_Recepcion) = (Select max(tb2.Fecha_Recepcion),max(Hora_Recepcion) from tabla as tb2 where tb1.Orden = tb2.Orden and tb1.Bulto = tb2.Bulto ) fijate por si los aportes de los otros miembros no te ayuda, por esta via investigalo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|