Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2011
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Question Cálculo de un total mediante SELECT

Una consulta: tengo una tabla simple como la siguiente:

Código Delphi [-]
             Campo1   Campo2
registro #1:  45       0
registro #2:  23       22
registro #3:  43       0
registro #4:  154      12
registro #5:  65       0
registro #6:  3        0
registro #7:  11       0

Lo que necesito hacer es obtener la suma de los valores del primer campo (algo muy simple), pero en los registros en que el segundo campo es distinto de cero (por ejemplo en los valores 22 y 12 en los registros 2 y 4 respectivamente), es ese valor el que tengo que incluir en el total, ignorando los valores del campo1 para ese registro (23 y 154 en este ejemplo). ¿ Se puede hacer todo junto desde una única sentencia SELECT ?.

En la tabla de ejemplo, el total sería: 45 + 22 + 43 + 12 + 65 + 3 + 11

Desde ya, muchas gracias.

__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 12-12-2011 a las 17:59:05.
Responder Con Cita
  #2  
Antiguo 12-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
puedes usar un case

Código Delphi [-]
 
Select Sum (Case when Total2 = 0 then Total1 else Total2 end) as Importe from...
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 12-12-2011
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Muchas gracias por la pronta respuesta !!!

Lo pondré en práctica.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #4  
Antiguo 12-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok
comentas si es lo que necesitas o quiza falte afinar algun detalle
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 12-12-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Esto es SQL SERVER, no se cómo será en MySQL
Código SQL [-]
SELECT TOP 1
    (SELECT 
         SUM(CAMPO1) 
       FROM TablaCampos 
       WHERE CAMPO2 = 0) + 
    (SELECT 
         SUM(CAMPO2) 
       FROM TablaCampos 
       WHERE CAMPO2 <> 0
    ) AS TOTALCAMPOS
  FROM TablaCampos
Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 12-12-2011 a las 21:49:18.
Responder Con Cita
  #6  
Antiguo 13-12-2011
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Cita:
Empezado por oscarac Ver Mensaje
puedes usar un case:
Código Delphi [-]
Select Sum (
          Case 
            when Total2 = 0 
            then 
              Total1 
            else 
              Total2 
          end
                 ) as Importe from...
Funcionó perfecto, muchas gracias. Me ahorró mucho tiempo, porque pensaba hacer dos sentencias SELECT y después con una tercerca calcular el total. Esta solución en cambio es breve y elegante. Así da gusto.

Agradezco también por la segunda alternativa.

Saludos !
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 13-12-2011 a las 14:48:30.
Responder Con Cita
  #7  
Antiguo 13-12-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
por fin pude contestar a una respuesta!!!!!!!

__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 15-12-2011
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Cita:
Empezado por oscarac Ver Mensaje
por fin pude contestar a una respuesta!!!!!!!

No sólo respondiste una pregunta, sino que brindaste una solución muy buena.

Nuevamente ,gracias.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
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
Select con Union y cálculo posterior gluglu SQL 7 05-08-2011 21:28:59
Busco componente Grid soportando obtención/asignación total de datos mediante texto rolandoj OOP 9 11-10-2008 04:40:51
Calculo del porcentaje con base en el total Patri Forero Impresión 2 27-11-2006 16:33:02
Porque el Importe Total en Select es Diferente al Update ???? AGAG4 Firebird e Interbase 3 01-07-2006 16:30:31
calculo en SELECT mangk SQL 6 16-08-2005 20:03:55


La franja horaria es GMT +2. Ahora son las 03:59:33.


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