Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Unir 2 Filas en Una

Amigos, tengo un problema, quiero unir los resultados de una consulta SQL, que me entrega

por ejemplo

CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 TIPO FECHA
1111 17/04/2013 222 NOMBRE INGRESO 18/04/2013
1111 17/04/2013 222 NOMBRE SALIDA 19/04/2013

LO QUE QUIERO HACER ES QUE QUEDE ALGO ASI

CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 TIPO FECHA TIPO FECHA
1111 17/04/2013 222 NOMBRE INGRESO 18/04/2013 SALIDA 19/04/2013.


SI PUDIESEN AYUDAR, DESDE YA MUCHAS GRACIAS
Responder Con Cita
  #2  
Antiguo 17-04-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

si te soy sincero no se si se podrá hacer a través de la propia consulta lo que pretendes, yo creo que no, pero si se me ocurre que puedes hacer un proceso intermedio para rellenar una tabla temporal intermedia donde coloques los datos como los quieras y sea esta la que muestras al final tras la consulta.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 17-04-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
Hola,

si te soy sincero no se si se podrá hacer a través de la propia consulta lo que pretendes, yo creo que no, pero si se me ocurre que puedes hacer un proceso intermedio para rellenar una tabla temporal intermedia donde coloques los datos como los quieras y sea esta la que muestras al final tras la consulta.

Saludos.
Hola ElDioni, en realidad, estoy tratando de hacer eso...pero, no lo logro!!! quizas con un ciclo que recorra la tabla dos veces,mmm en realidad no se, quizas la primera vez que llene con campos clave, luego los que quiero acomodar. No se no se me ocurre....
Responder Con Cita
  #4  
Antiguo 17-04-2013
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Ya depende del motor de base de datos y de la implementación real del problema pero, apegándome al ejemplo, yo lo haría con algo como:
Código SQL [-]
SELECT 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN TIPO ELSE NULL END) AS TIPO1,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN FECHA ELSE NULL END) AS FECHA1,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN TIPO ELSE NULL END) AS TIPO2,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN FECHA ELSE NULL END) AS FECHA2
FROM TABLA
GROUP BY 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 18-04-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Y si tienes sólo INGRESO y SALIDA, yo haría esto:

Código SQL [-]
SELECT 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN FECHA ELSE NULL END) AS INGRESO,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN FECHA ELSE NULL END) AS SALIDA
FROM TABLA
GROUP BY 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4

Cuéntanos cómo te ha ido.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 18-04-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Cita:
Empezado por TOPX Ver Mensaje
Ya depende del motor de base de datos y de la implementación real del problema pero, apegándome al ejemplo, yo lo haría con algo como:
Código SQL [-]
SELECT 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN TIPO ELSE NULL END) AS TIPO1,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN FECHA ELSE NULL END) AS FECHA1,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN TIPO ELSE NULL END) AS TIPO2,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN FECHA ELSE NULL END) AS FECHA2
FROM TABLA
GROUP BY 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4
-
GRACIAS....Me funciono !!!!!muchas gracias , ahora solo debo poner un isnull(...), tratando de saber donde, pero ahi vamos gracias!!!te pasaste
Responder Con Cita
  #7  
Antiguo 18-04-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Y si tienes sólo INGRESO y SALIDA, yo haría esto:

Código SQL [-]
SELECT 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN FECHA ELSE NULL END) AS INGRESO,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN FECHA ELSE NULL END) AS SALIDA
FROM TABLA
GROUP BY 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4

Cuéntanos cómo te ha ido.

Saludos
Gracias, al termino siendo mas o menos de la forma que indicas!!
FECHA_INGRESO, FECHA_SALIDA

SALUDOS
Responder Con Cita
  #8  
Antiguo 18-04-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo la solución que te dieron me dejo pensando y creo que lo mejor sería:

Alternativa 1:

Código SQL [-]
SELECT 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4,
  MAX(CASE WHEN TIPO = 'INGRESO' THEN FECHA ELSE NULL END) AS INGRESO,
  MAX(CASE WHEN TIPO = 'SALIDA' THEN FECHA ELSE NULL END) AS SALIDA
FROM DEMO
GROUP BY 
  CAMPO1, CAMPO2, CAMPO3, CAMPO4
Resultado Alternativa 1:
Cita:
CAMPO1 CAMPO2 CAMPO3 CAMPO4 INGRESO SALIDA
1111 17/04/2013 222 NOMBRE 18/04/2013 NULL
1111 18/04/2013 222 NOMBRE NULL 19/04/2013
Alternativa 2:
Código SQL [-]
SELECT
    TABLA.CAMPO1,
    TABLA.CAMPO2,
    TABLA.CAMPO3,
    TABLA.CAMPO4,
    TABLA.TIPO,
    TABLA.FECHA,
    TABLA2.TIPO,
    TABLA2.FECHA
FROM TABLA
     LEFT OUTER JOIN TABLA TABLA2 ON
                    (TABLA2.CAMPO1 = TABLA.CAMPO1) AND
                    (TABLA2.TIPO = 'SALIDA')
WHERE (TABLA.TIPO = 'INGRESO')
Resultado Alternativa 2:
Cita:
CAMPO1 CAMPO2 CAMPO3 CAMPO4 TIPO FECHA TIPO1 FECHA1
1111 17/04/2013 222 NOMBRE INGRESO 18/04/2013 SALIDA 19/04/2013
Es solo otra opinión...
Saludos cordiales
Responder Con Cita
Respuesta



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
Unir filas con la misma llave de una misma consulta sql server DarkBlue SQL 4 11-09-2012 22:42:24
unir varias filas en una sola microbiano SQL 4 26-04-2010 18:28:27
Unir dos pdf nelem Internet 4 11-02-2009 14:03:07
Unir Columnas vtdeleon SQL 4 15-06-2005 00:34:49
unir db grids piyugo Varios 3 29-08-2004 23:54:50


La franja horaria es GMT +2. Ahora son las 19:51:23.


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