Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2005
hmoner hmoner is offline
Miembro
 
Registrado: may 2005
Posts: 52
Poder: 19
hmoner Va por buen camino
Unir 2 Consultas en una sola

Hola Amigos
Tengo un problema, bien sucio, y debo hacerlo si o si
Tengo 2 consultas, las cuales debo unir en una sola.

Es un programita de promociones donde:
Cada promocion tiene sus clientes, las facturaciones que se le han hecho a cada uno, cuantos
puntos ha ganado con cada facturacion, etc. etc.

La consulta siguiente obtiene los datos del socio y reporta:
Monto facturado en promociones normales
Monto facturado en promociones especiales
Monto Total facturado
( Todo esto para una promocion especifica :IDPROMO )

Código SQL [-]
  SELECT CLIENTE.NROSOCIO AS SOCIO, CLIENTE.NOMBRE AS CLIENTE, 
  CLIENTE.APELLIDO AS APELLIDO, CLIENTE.ESTABLECIMIENTO AS ESTABLECIMIENTO,
  SUM(case when espromoesp=true then 0 else FACTURACION.MONTO end) AS M_NORMAL,
  SUM(case when espromoesp=true then FACTURACION.MONTO else 0 end) AS M_ESPECIAL,
  SUM(FACTURACION.MONTO) AS TOT_MONTO
  FROM CLIENTE LEFT JOIN FACTURACION ON FACTURACION.IDCLIENTE=CLIENTE.ID
  where cliente.idpromo = :IDPROMO
  GROUP BY CLIENTE.NOMBRE,CLIENTE.APELLIDO,CLIENTE.ESTABLECIMIENTO,SOCIO
  ORDER BY CLIENTE.APELLIDO ASC, CLIENTE.ESTABLECIMIENTO ASC
Esta otra consulta reporta:
Total de puntos ganados ( en facturaciones normales y especiales )
Total de puntos que el cliente ha canjeado
Total de puntos que tiene en la actualidad ( totalganados - canjeados )
( Todo esto para una promocion especifica :IDPROMO )

Código SQL [-]
  SELECT CLIENTE.ID AS COD, 0 AS CANJEADOS, SUM(FACTURACION.PUNTOS) AS TOTALPUNTOS
  INTO #TEMP FROM
  CLIENTE JOIN FACTURACION ON CLIENTE.ID = FACTURACION.IDCLIENTE
  WHERE CLIENTE.IDPROMO = PIDPROMO
  GROUP BY COD, CANJEADOS;
  UPDATE #TEMP SET CANJEADOS =
  (SELECT SUM(B.TOTALPUNTOS) FROM CANJE B WHERE B.IDCLIENTE = #TEMP.COD);
  SELECT B.NROSOCIO, B.NOMBRE, B.APELLIDO, B.ESTABLECIMIENTO, 
  TOTALPUNTOS, CANJEADOS, (TOTALPUNTOS - CANJEADOS) AS PUNTOSACTUALES
  FROM #TEMP A
  LEFT OUTER JOIN CLIENTE B ON A.COD = B.ID
  ORDER BY APELLIDO,NOMBRE,ESTABLECIMIENTO ASC
Lo que debo hacer es: mostrar los datos del cliente: nombre apellido y establecimiento y luego
monto total facturado
monto normal
monto especial
puntos ganados
puntos canjeados
puntos actuales

Solo eso... juntar los 2 informes en uno solo

Algun alma caritativa que quiera ayudarme con este problemon ?

Desde ya muchas gracias...

Última edición por dec fecha: 25-11-2005 a las 03:11:09. Razón: ¡¡Encerrad el código fuente entre las etiquetas [SQL] ... [/SQL]!!
Responder Con Cita
  #2  
Antiguo 25-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

No he leido todo tu mensaje pero por el titulo que has dado te dire que chequees este hilo:
http://www.clubdelphi.com/foros/showthread.php?t=27421
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 29-11-2005
hmoner hmoner is offline
Miembro
 
Registrado: may 2005
Posts: 52
Poder: 19
hmoner Va por buen camino
hola Van Troi...
Gracias por responder...

No se si tu consejo ira a funcionar, ya que tengo PUNTOSGANADOS, PUNTOSCANJEADOS, PUNTOSACTUALES en una de las consultas y MONTOFACTURADONORMAL, MONTOFACTURADOESPECIAL, MONTOTOTAL en otra de las consultas, es decir:
Cada una de las consultas usa 3 campos distintos... y lo comun a cada una seria el nombre y los datos de la persona...

Funcionara igual o la Union debe recibir = cantidad de campos con igual nombre de campos ?

Gracias
Responder Con Cita
  #4  
Antiguo 29-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Cita:
Empezado por hmoner
Funcionara igual o la Union debe recibir = cantidad de campo
con igual nombre de campos ?
Lo unico importante es tener el mismo orden en los campos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 14-12-2005
FOURIER FOURIER is offline
Miembro
 
Registrado: dic 2005
Posts: 40
Poder: 0
FOURIER Va por buen camino
Espero que te ayude

SELECT CLIENTE.NROSOCIO AS SOCIO, CLIENTE.NOMBRE AS CLIENTE, CLIENTE.APELLIDO AS APELLIDO, CLIENTE.ESTABLECIMIENTO AS ESTABLECIMIENTO, (select SUM(case when espromoesp=true then 0 else FACTURACION.MONTO end) from Facturacion as F where Facturacion.idcliente=cliente.id) AS M_NORMAL, (select SUM(case when espromoesp=true then FACTURACION.MONTO else 0 end) from facturacion as F where Facturacion.idcliente=cliente.id) AS M_ESPECIAL, (select SUM(FACTURACION.MONTO) from Facturacion as where Facturacion.idcliente=cliente.id) AS TOT_MONTO, (select sum(facturacion.puntos) from Facturacion where idcliente=cliente.id) as Totalpuntos,(SELECT SUM(B.TOTALPUNTOS) FROM CANJE B WHERE B.IDCLIENTE = cliente.id) as canjea,totalpuntos-canjea as puntos_actuales FROM CLIENTE where cliente.idpromo = :IDPROMO ORDER BY CLIENTE.APELLIDO ASC, CLIENTE.ESTABLECIMIENTO ASC


en fin espero que eso te ayude mi estimado
Responder Con Cita
  #6  
Antiguo 14-12-2005
hmoner hmoner is offline
Miembro
 
Registrado: may 2005
Posts: 52
Poder: 19
hmoner Va por buen camino
FOURIER !!
Mil gracias por tu aporte... no sabes cuan feliz estoy de recibir una respuesta en este hilo...

Voy a probarlo enseguida y luego te comento como me fue con la consulta...

Gracias !!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 19:25:11.


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