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 06-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Sentencia SQL super compleja

Hola:

Tengo una tabla donde tengo 3 campos Nombre, Costo y Fecha y quiero que se me sumen los Costos de un mismo nombre dentro de un mismo mes

Ejemplo:

Pepe 40 Enero
Carlo 20 Enero
Mario 0 Enero

Pepe 0 Febrero
Carlo 27 Febrero
Mario 15 Febrero

Pepe 10 Marzo
Carlo 22 Marzo
Mario 0 Marzo

Donde se complica esto..... que no quiero que el mes me salga al lado sino arriba Ejemplo:

Enero Febrero Marzo
Pepe 40 0 10
Carlo 20 27 15
Mario 0 15 0

Digame si es posible de hacer y si me pueden tirar una ayuda con eso

Uso Delphi 6 y Access

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #2  
Antiguo 06-03-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
http://www.clubdelphi.com/foros/showthread.php?t=17253
__________________

Responder Con Cita
  #3  
Antiguo 06-03-2007
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
subquery

no se nadita de acces pero en PostgreSQL por ejemplo puedes hacer un subquery:

Código SQL [-]
Select
  idempleado,
  nombreempleado,
  (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=1) as enero,
  (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=2) as febrero,
  (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=3) as marzo,
  sum(valorventas) as totaltrimestre
from ventasporempleado v1
group by idempleado, nombreempleado

El resultado será :

ID, EMPLEADO, ENERO, FEBRERO, MARZO, TOTALTRIMESTRE
123,JUAN,15,20,10,45
456,PEDRO,10,10,10,30
789,MATEO,5,6,9,20

aunque se que no es Aaccess espero que te de una ayuda.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #4  
Antiguo 06-03-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.054
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No quiero pecar de pedante, sólo a modo de broma:
Vale, esto ya te lo han contestado, ¿pero dónde está la pregunta sobre la sql supercompleja?
Responder Con Cita
  #5  
Antiguo 06-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Bueno gracias por responde... para mi es super compleja porque sin el Decode no se como lo iba a hacer... probare y despues posteare resultados

Saludos y Gracias
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #6  
Antiguo 06-03-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.054
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Sr.Scorpion
Bueno gracias por responde... para mi es super compleja porque sin el Decode no se como lo iba a hacer... probare y despues posteare resultados Saludos y Gracias
Como ya dije antes, era sólo una broma, ya sé que cuando no se conoce algo, parece muy complejo, y cuando se conoce, de repente, parece sencillo.
Espero que puedas solucionar tu duda.
Responder Con Cita
  #7  
Antiguo 06-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Creo que el enlace que te han puesto está la solución. Yo había dado un ejemplo similar con Case a como lo haría Access con Transform.

Puedes buscar en google por Trasnsform en access:
http://www.programacion.net/tutorial/sql/12/
http://www.wellho.net/forum/The-MySQ...ot-tables.html
__________________
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
  #8  
Antiguo 06-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Bueno debido a que el link no me funciono porque estoy usando Access.... probe con este... y no me fue muy bien ya que cuando suma la tabla suma los precios en dependencia del mes y no de los nombres y el mes

Código SQL [-]
SELECT Tabla1.Nombre, (Select sum(Precio) from Tabla1  where Fecha=1) AS enero
FROM Tabla1
GROUP BY Tabla1.Nombre;

Me sale lo siguiente:

Nombre___Enero
Carlos______30
Mario______30
Pepe_______30

Cuando me deberia salir
Nombre___Enero
Carlos______20
Mario_______0
Pepe_______10

Que me podria faltar ?

Cita:
Empezado por movorack
no se nadita de acces pero en PostgreSQL por ejemplo puedes hacer un subquery:

Código SQL [-]Select idempleado, nombreempleado, (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=1) as enero, (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=2) as febrero, (Select sum(valorventas) from ventasporempleado v2 where v2.idempleado = v1.idempleado and mes=3) as marzo, sum(valorventas) as totaltrimestre from ventasporempleado v1 group by idempleado, nombreempleado


El resultado será :

ID, EMPLEADO, ENERO, FEBRERO, MARZO, TOTALTRIMESTRE
123,JUAN,15,20,10,45
456,PEDRO,10,10,10,30
789,MATEO,5,6,9,20

aunque se que no es Aaccess espero que te de una ayuda.
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #9  
Antiguo 06-03-2007
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hello...

Cita:
Empezado por Sr.Scorpion
Que me podria faltar ?
algo antes de continuar: Recuerdo que la primera vez que hice el tutorial "Hola Mundo" demore casi 5 minutos realizandolo. y eso en aquel entonces para mi era SUPERULTRAREQUETECOMPLEJO.

y con respecto a tu codigo...

Código SQL [-]
SELECT Tabla1.Nombre, (Select sum(Precio) from Tabla1  where Fecha=1) AS enero
FROM Tabla1
GROUP BY Tabla1.Nombre;

te cuento que la subquery que realizas solo llama al mes en la sentencia WHERE.Debes complementar ese where con el ID del empleado o el nombre (mejor el ID).

Código SQL [-]
Select
  t1.Nombre,
  (Select num(precio) from tabla1 t2 where t2.nombre = t1.nombre and t2.fecha=1) as ENERO
from tabla1 t1

por eso te puse un ejemplo completo... revisa el codigo que te puse anteriormente...

Bendiciones.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #10  
Antiguo 06-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Al parecer tu tienes dos tablas pero en mi caso es solo una.....

Código SQL [-]
SELECT Tabla1.Nombre, (Select sum(Precio) from Tabla1  where Nombre = Nombre and Fecha=1) AS enero
FROM Tabla1
GROUP BY Tabla1.Nombre;

Aqui le agrego lo del nombre y la cosa sigue igual
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #11  
Antiguo 06-03-2007
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Es solo una tabla.

es solo que estoy declarando un alias para hacerlo más legible y más funcional.

Código SQL [-]
  Select
    t1.campo1,
    t1.campo2
  from tabla1 t1 -- Estoy declarando t1 como alias de tabla1

Así es más facil saber a que tabla me refiero en los subquery.

Código SQL [-]
    (select sum(campo2) from table1 T2 where T1.campo1 = T2.campo1) as campo3

ahora si ves... es solo una tabla.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
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
Consulta SQL algo compleja subzero Firebird e Interbase 2 26-10-2006 18:49:01
Una super duda con FastReport bustio Impresión 6 09-12-2005 14:28:39
Super duda con Aplicacion MDI bustio Varios 0 07-12-2005 16:51:54
Variables Super Globales JANDREGUE Varios 1 18-03-2005 18:03:16
consulta SQL que me resulta compleja j2mg SQL 5 29-05-2003 22:50:13


La franja horaria es GMT +2. Ahora son las 11:21:24.


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