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 01-05-2010
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
Totales de sumatorias

Hola a todos, haber si me pueden ayudar con esto, el siguiente código funciona perfecto:

Código SQL [-]
SELECT di.cod_diag,  di.des_diag, sum(1) as cantidad,
SUM( Case pa.cod_sexo when 'F' then 1 else 0 end ) as SF,
SUM( Case pa.cod_sexo when 'M' then 1 else 0 end ) as SM,
SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='F') then 1 else 0 end)  rangoF1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='F') then 1 else 0 end)  rangoF2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='F') then 1 else 0 end)  rangoF3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='F') then 1 else 0 end)  rangoF4,

SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='M') then 1 else 0 end)  rangoM1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='M') then 1 else 0 end)  rangoM2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='M') then 1 else 0 end)  rangoM3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='M') then 1 else 0 end)  rangoM4



FROM TBL_HC_OFTALMOLOGIA_ hc

LEFT JOIN tbl_pacientes_ pa ON pa.clave = hc.clv_paciente
LEFT JOIN tbl_diagnosticos_ di ON di.cod_diag = hc.cod_diag1


WHERE 1=1 

AND (hc.estatus = 'A' )
AND (hc.cod_diag1>=:CodDiagIni) AND (hc.cod_diag1<=:CodDiagFin)
AND (pa.cod_entidad>=:CodEntidadIni) AND (pa.cod_entidad<=:CodEntidadFin)
AND  (hc.fecha >= :fechaini  AND hc.fecha <= :fechafin) 
AND  (hc.edad >= :EdadIni  AND hc.edad <= :EdadFin) 
AND  (hc.tipo_edad >= :TipoEdadIni  AND hc.tipo_edad <= :TipoEdadFin) 
AND  (pa.cod_sexo >= :GeneroIni  AND pa.cod_sexo <= :GeneroFin) 
AND  (hc.clv_usuario >= :ProfesionalIni  AND hc.clv_usuario <= :ProfesionalFin)

GROUP BY di.cod_diag,  di.des_diag
order by 3 desc

Lo que quiero ahora es saber el total del los rangos: rangoF1, rangoF2, ....
que debo hacer? no importa si es en otro SELECT diferente. Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 02-05-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question

Cita:
Empezado por Behemot Ver Mensaje
Lo que quiero ahora es saber el total del los rangos: rangoF1, rangoF2, ....
que debo hacer? no importa si es en otro SELECT diferente. Muchas Gracias.
No está claro, ¿acaso el SUM no te devuelve el total por cada rango? Estás sumando 0 ó 1 según el CASE lo indica, claramente esa expresión te daría el total por rango.

Necesitaría que seas un poco mas específico
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 02-05-2010 a las 18:14:32. Razón: Mejora de la semántica
Responder Con Cita
  #3  
Antiguo 02-05-2010
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
Hola Santiago14 gracias por tu interes, si, efectivamente tengo los totales por cada codigo y cada rango lo que necesito es sumar el total de la columna por cada rango, espero ahora me entiendas, ejemplo:


CODIGO RANGOF1 RANGOF2
-H234--------2--------5 <- ESTE ESTOTAL QUE ME DA EL SUM()
-H526--------4--------2
---------------------------
--------------6--------7 <-ESTE ES EL TOTAL QUE BUSCO

Gracias.
Responder Con Cita
  #4  
Antiguo 04-05-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up

Código SQL [-]
SELECT 
SUM( Case pa.cod_sexo when 'F' then 1 else 0 end ) as SF,
SUM( Case pa.cod_sexo when 'M' then 1 else 0 end ) as SM,
SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='F') then 1 else 0 end)  rangoF1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='F') then 1 else 0 end)  rangoF2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='F') then 1 else 0 end)  rangoF3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='F') then 1 else 0 end)  rangoF4,

SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='M') then 1 else 0 end)  rangoM1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='M') then 1 else 0 end)  rangoM2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='M') then 1 else 0 end)  rangoM3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='M') then 1 else 0 end)  rangoM4

FROM TBL_HC_OFTALMOLOGIA_ hc

LEFT JOIN tbl_pacientes_ pa ON pa.clave = hc.clv_paciente
LEFT JOIN tbl_diagnosticos_ di ON di.cod_diag = hc.cod_diag1

WHERE 1=1 

AND (hc.estatus = 'A' )
AND (hc.cod_diag1>=:CodDiagIni) AND (hc.cod_diag1<=:CodDiagFin)
AND (pa.cod_entidad>=:CodEntidadIni) AND (pa.cod_entidad<=:CodEntidadFin)
AND  (hc.fecha >= :fechaini  AND hc.fecha <= :fechafin) 
AND  (hc.edad >= :EdadIni  AND hc.edad <= :EdadFin) 
AND  (hc.tipo_edad >= :TipoEdadIni  AND hc.tipo_edad <= :TipoEdadFin) 
AND  (pa.cod_sexo >= :GeneroIni  AND pa.cod_sexo <= :GeneroFin) 
AND  (hc.clv_usuario >= :ProfesionalIni  AND hc.clv_usuario <= :ProfesionalFin)
Yo creo que con esto basta, es en una consulta por aparte.
Al no tener que agrupar por los campos anteriores al SUM, directamente hará las sumas totales.
Le he sacado Group by y Order by no es necesario.
No lo he probado así que el Where hay que depurarlo un poco. En especial tengo dudas con los campos SF y SM, no estoy seguro si afectan a la sumatoria final o no.
Bien, me dirás como va la cosa.
Espero haber ayudado.

Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 04-05-2010 a las 00:53:55. Razón: Mejora de la consulta
Responder Con Cita
  #5  
Antiguo 04-05-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Claro que a posteriori de las dos consultas habrá que ponerlas en la grilla o en el componente que estés usando con un poco de programación.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #6  
Antiguo 04-05-2010
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
Santiago14, hermano muchas muchas gracias, funciono a la perfección no movi absolutamente nada, nuevamente gracias.

PD. Esto lo estoy usando en el Report Manager. Otra pregunta, es que trate de mandar tablas por parámetro, pero la verdad creo que ni cerca estuve de hacerlo funcionar, como vez la tabla se llama OFTALOMOLOGIA pues tengo OPTOMETRIA, DERMATOLOGIA, NEUROLOGIA, ETC y esas tablas manejan la misma estructura y quería un solo reporte para todas. Te agradecería que me pudieras ayudar con esto.

Si quieres saber más de mi proyecto aquí te dejo la dirección ww.medicad.net

Saludos...
Responder Con Cita
  #7  
Antiguo 06-05-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Bueno, no uso demasiado Report Manager pero creo que está montado sobre un form, por lo cual deberías poder pasar las tablas como si fueran variables comunes.
Es mas, podrías pasar los "nombres de las tablas" o los resultados de la consulta.
No creo haber ayudado mucho en esto pero en una de esas...
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #8  
Antiguo 18-08-2010
Avatar de javave
javave javave is offline
Registrado
 
Registrado: ago 2010
Posts: 3
Poder: 0
javave Va por buen camino
Ayuda

Hola amigos qué tal?

Epa soy novato en Delphi, apenas empecé a usarlo ayer.

Estoy creando un programita para familiarizarme con Delphi. Sin embargo, tengo una duda que me está matando:

Estoy creando una condición y necesito saber cómo hago para extraer los datos de un EDIT para poder aplicar la condición.

Hasta ahora tengo este código:
Código Delphi [-]
var
prueba: Double;

begin
prueba := StrToFloat(Valor.Text);
prueba := Format([prueba]);
if isNAN(prueba) then
ShowMessage ('Lo que introdujo no es un número')
end.
Donde <<Valor>> es es nombre del EDIT donde el usuario introduce los números.

El objetivo es que el programa avise cuando el usuario introduce letras en ese EDIT. El programita que estoy desarrollando es un conversor.

Gracias espero su respuesta.
Responder Con Cita
  #9  
Antiguo 18-08-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Question

Cita:
Empezado por javave Ver Mensaje
Hola amigos qué tal?

Epa soy novato en Delphi, apenas empecé a usarlo ayer.

Estoy creando un programita para familiarizarme con Delphi. Sin embargo, tengo una duda que me está matando:

Estoy creando una condición y necesito saber cómo hago para extraer los datos de un EDIT para poder aplicar la condición.

Hasta ahora tengo este código:
Código Delphi [-]var prueba: Double; begin prueba := StrToFloat(Valor.Text); prueba := Format([prueba]); if isNAN(prueba) then ShowMessage ('Lo que introdujo no es un número') end.

Donde <<Valor>> es es nombre del EDIT donde el usuario introduce los números.

El objetivo es que el programa avise cuando el usuario introduce letras en ese EDIT. El programita que estoy desarrollando es un conversor.

Gracias espero su respuesta.
Como vino a dar esto aqui?? si es de otro post!!

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
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
sumatorias por paginas artemisa Impresión 5 23-10-2005 00:54:02
Totales por Grupo trex2000 Impresión 2 24-08-2005 18:40:14
Totales en informe Asshole Impresión 1 16-06-2005 15:33:05
Totales con FreeReports brandolin Impresión 0 28-08-2004 07:13:37
Sumatorias en QRGroups estan mal @-Soft Impresión 1 27-04-2004 10:24:39


La franja horaria es GMT +2. Ahora son las 21:49:40.


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