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 24-09-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Consulta SQL - Sum - Count - Otros

Hola amigos...

quiero hacer una consulta, pero no se como deberia hacerla...

tengo la siguiente consulta, en donde realizo un filtro de todos los datos que cumplan 3 condiciones.. hasta aquí todo bien.. pero además, necesito agregar u obtener 2 resultados más.. que seria

- Nro de registros que cumplen condicion
- Suma campo Proceso.Pro_Monto que cumplen la condicion

Se como usar el count y el Sum.. pero no se como agregarlos a esta consulta para que me arroje todos los datos que necesito...

o necesitaría realizar las consultas en forma separada (1 para mostrar y otra para realizar los calculos)

Código Delphi [-]
     AQ_Select.Close;
     AQ_Select.SQL.Clear;
     AQ_Select.SQL.Add('Select * From Personal, Proceso');
     AQ_Select.SQL.Add('Where Personal.Per_Nro=Proceso.Per_Nro');
     AQ_Select.SQL.Add('And (Proceso.Pro_Fecha=:Var1) And (Proceso.Pro_Tipo=:Var2) And (Proceso.Pro_Area =:Var3)');
     AQ_Select.SQL.Add('Order By Proceso.Per_Nro');
     AQ_Select.Parameters[0].Value := Concat(FormatDateTime('mm',Fecha.Date),'-',FormatDateTime('yyyy', Fecha.Date));
     AQ_Select.Parameters[1].Value := 'L';
     AQ_Select.Parameters[2].Value := Area.Text;
     AQ_Select.Open;

espero que me entienda... ahh.. es para sqlserver 2000
__________________
BlueSteel
Responder Con Cita
  #2  
Antiguo 24-09-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Aqui tendria la consulta que me arroja los calculos...

Código SQL [-]
SELECT     COUNT(Proceso.Per_Nro) AS Numero, SUM(Proceso.Pro_Monto) AS Total
FROM         Proceso INNER JOIN
                      Personal ON Proceso.Per_Nro = Personal.Per_Nro
WHERE     (Proceso.Pro_Fecha = '09-2007') AND (Proceso.Pro_Tipo = 'L') AND (Proceso.Pro_Area = 1)


la idea es unir la anterior con esta para que además de los resultados me muestre el listado de registros que cumpla la condicion...

se podra hacer
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 24-09-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
con subconsultas, seria algo asi:

Código SQL [-]
Select campos,
(SELECT     COUNT(Proceso.Per_Nro)
FROM         Proceso INNER JOIN
                      Personal ON Proceso.Per_Nro = Personal.Per_Nro
WHERE     (Proceso.Pro_Fecha = '09-2007') AND (Proceso.Pro_Tipo = 'L') AND (Proceso.Pro_Area = 1) ) as Cantidad, 
(SELECT     COUNT(Proceso.Per_Nro) AS Numero, SUM(Proceso.Pro_Monto) AS Total
FROM         Proceso INNER JOIN
                      Personal ON Proceso.Per_Nro = Personal.Per_Nro
WHERE     (Proceso.Pro_Fecha = '09-2007') AND (Proceso.Pro_Tipo = 'L') AND (Proceso.Pro_Area = 1) ) as Suma
From tablas
Where opciones
Responder Con Cita
  #4  
Antiguo 24-09-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
Solo como comentario:

Trata de evitar lo más que puedas el usar "Select *". Puede que base tu programación según el orden de los campos. Pero puede suceder que cambies la tabla por una cosa o por otra y el orden de "Select *" va cambiar y vas a tener que cambiar el programa.

Eso entre muchas otras cosas. Así que como recomendación, evita utilizar "select *"
__________________

Responder Con Cita
  #5  
Antiguo 25-09-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Código SQL [-]
Select campos1, campo2, .., campoN,COUNT(Proceso.Per_Nro) AS Numero, SUM(Proceso.Pro_Monto) AS Total
from personal Per inner join proceso Pro on Pro.Per_no = Per.Per_no
where(Proceso.Pro_Fecha = '09-2007') AND (Proceso.Pro_Tipo = 'L') AND (Proceso.Pro_Area = 1)
group by campo1, campo2, .., campoN

Un saúdo
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #6  
Antiguo 10-10-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cita:
Empezado por Ivanzinho Ver Mensaje
Código SQL [-]Select campos1, campo2, .., campoN,COUNT(Proceso.Per_Nro) AS Numero, SUM(Proceso.Pro_Monto) AS Total
from personal Per inner join proceso Pro on Pro.Per_no = Per.Per_no
where(Proceso.Pro_Fecha = '09-2007') AND (Proceso.Pro_Tipo = 'L') AND (Proceso.Pro_Area = 1)
group by campo1, campo2, .., campoN




Un saúdo

Probe tu consulta... pero en realidad no me sirve, ya que si bien me arroja todos los resultados, los totales tanto del Count como del Sum, son errados..

el Count siempre me entrega 1, y el Sum siempre me entrega el valor del Monto...
__________________
BlueSteel
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 errada con COUNT Jose Roman SQL 1 21-07-2007 17:51:55
Consulta en relación a count y group by en dos tablas Albano MySQL 3 11-05-2007 00:04:34
problema con la consulta select count() enecumene PHP 5 01-02-2007 23:33:24
Es posible consulta SQL con 'Count' y Valor de un campo ? gluglu SQL 11 09-01-2007 00:02:39
como cojo el valor de la consulta del count serhasae SQL 11 30-09-2006 04:29:58


La franja horaria es GMT +2. Ahora son las 09:13: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