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 07-07-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 14
ivantj24 Va por buen camino
Suma de columna con limite en SQL Server

Hola que tal de nuevo aqui molestando a la comunidad , espero me puedan echar una mano con eso, lo que pasa es que estoy haciendo una aplicacion en donde el usuario escogera los parametros para presupuesto, fecha etc, y a traves de estos parametros hago la consulta.

Lo que necesito es que me sume una columna, pero esa suma seran a partir de los parametros que escoja el usuario, entonces, lo que requiero es que me sume una columna de la tabla, pero teniendo como limite una cantidad, y apartir de la cual termine la suma, me muestre esos resultados de los regstros que hayan sido sumados, que por obvias razones estan entre las condicionantes qu eel usuario eligio.

un ejemplo seria:

tengo en una Tabla una columna que quiero sumar, estos datos:

ID - Cantidad
1.....1
2.....2
3.....3
4.....2
5.....3
6.....1

entonces yo escojo fechas, y una cantida que pongo como como limite de 5 dentro de un Edit para la suma, los registros que dan con esta condicion que el usuario escoje son:

ID - Cantidad
2.....2
3.....3
6.....1

entonces necesito, que me sume la columna Cantidad, y que sume todos esos registros hasta que llegue al limite que dio el usuario como limite 5, los unicos datos a mostrar segun mi condicion, serian el

ID - Cantidad
2.....2
3.....3

sumados dan 5, el limite que yo estoy poniendo en un Edit, no se como hacer eso, espero me puedan ayudar, y espero a ver sido claro con lo que no puedo hacer;

hago el Select de esta manera: (estos datos de fecha y importe, yo los paso por parametros, y estan bien, por eso no hay problema, este query es en SQL, yo lo tengo como parametros en delphi)

Código SQL [-]
Select SUM(Importe) AS SUMATORIA from Trama WHERE (FechaCarga Between '02/02/2011' and '01/06/2011') and (Importe Between 10 and 50)


pero lo que quiero es que me empiece a contar apartir del primer registro que cumpla con los parametros, y hasta la cantidad limite, y teniendo esos registros que los muestre, espero alguien me pueda ayudar,
intente poner un HAVING pero ese solo es un condicionante para los registros individuales, no para la sumatoria en conjunto, espero me puedan ayudar y de ante mano muchisimas gracias, espero a ver sido claro

necesito como limitar la suma, hasta una cantidad en especifico
Responder Con Cita
  #2  
Antiguo 07-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ivantj24.

Si no te entendí mál creo que la consulta sería:
Código SQL [-]
SELECT ID, CANTIDAD FROM TU_TABLA
WHERE FECHA BETWEEN :FECHA1 AND :FECHA2
GROUP BY ID, CANTIDAD
HAVING SUM(PRECIO) <= :CANT

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-07-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 14
ivantj24 Va por buen camino
hola que tal ecfisa, gracias por tomarte la molestia de ayudarme, intente lo que dijes pero con mis parametros y no me funciono, resulta que al parecer SUM('campo') <= 100 hace una comparacion de cada registro, pero no lo suma, me muestra todos los registros, no se si estoy haciendo algo mal o no se,

asi pongo mi consulta:

Cita:
Select TramaID, FechaCarga, Importe, Tipo From Trama
WHERE (FechaCarga Between '02/02/2011' and '01/06/2011') and (Importe Between 10 and 50)
Group by TramaID, FechaCarga, Importe, Tipo
Having SUM(Importe) <= 100
esto lo hago en sql, y me arroja todos los registros que esten dentro de la condicion between, pero no me suma la columna, me muestra importe, que es el campo al que estoy sumando, pero en general, me salen todos los datos,

TramaID ----------- FechaCarga --------Tipo--------------Importe
1-------------------17/01/2010----------0---------------- 50


osea me salen todos los importes menores de 100, pero no suma, espero me puedan ayudar, por que lo que quiero es que sume toda la columna, hasta donde la suma de, un ejemplo, hasta donde la suma sea 100, (este valor lo designa el usuario)
gracias efcia por la ayuda, pero al parecer aun no queda, saludos espero me puedan echar la mano con esto
Responder Con Cita
  #4  
Antiguo 07-07-2011
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Yo lo haria con un procedimiento, con una sola sentencia no lo veo

saludos
Responder Con Cita
  #5  
Antiguo 07-07-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 14
ivantj24 Va por buen camino
Alguna idea con ese Procedimiento Almacenado? por que hice varios intentos anoche y nada, me dijeron que usara sub consultas, querys dentro de querys pero no di en el blanco, a lo mejor hice algo mal, y ese es mi problema, como hago eso, si tienes una idea con ese SP te agradeceria la ayuda, o la ilustracion de como poder hacerlo, saludos y muchas gracias de antemano
Responder Con Cita
  #6  
Antiguo 08-07-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola ivantj24, a mi se me ocurre con subconsultas sobre la misma tabla:

Código Delphi [-]
Select t.id, t.importe 
From Trama t left join Trama t1
        on (t.id>=t1.id)
Group By t.id, t.importe
Having sum(t1.importe)<=5
Order By t.id

Primero has la prueba de esa forma y despues le aumentas tus condicones en el Where.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 08-07-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
......a mi se me ocurre con subconsultas sobre la misma tabla.....
Me he equivocado al describir, no subconsultas, sino join sobre la misma tabla .

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 09-07-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 14
ivantj24 Va por buen camino
caro muchas gracias pro la ayuda, le he intentado com odices pero al parecer fue un error mio por que genero la consulta, en el sql, y la hace pero nunca termina, como que se cicla o no se, y no me regresa ningun resultado, ya resolvi el problema, aunque me gaste demasiado codigo para resolverlo cosa que debo mejorar por que no es nada optimo, lo importante es que ya quedo aunque como repito gaste varias lineas de codigo , muchas gracias caro por la ayuda, saludos
Responder Con Cita
  #9  
Antiguo 10-07-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
hola,
no se si sabrás que hay procedimientos almacenados que devuelven registros i gual que las consultas.

Por lo tanto, sólo tienes que enviarle la sql y la cantida de limite.

En el procedimiento, lo unico que tienes que hacer es asignar un cursor, ya a base de fetch ...next, sacr datos hasta que llegues al limite.

Lo unico que no sé es cómo puedes sacar la información de cada registro, ya que si haces un select por registro hasta que acabes, si no estoy equivocado saca las cabeceras.

Es buscar un poco y probar. En la red hay muchos sitios para buscar.

Saludos

Un ejemplo (parte de un SP)
Código SQL [-]
Declare Estado_Cursor CURSOR FOR
Select porcpartic,sumaporcpartic from dbo.T_Temp_Pareto
Open Estado_Cursor
Fetch next 
  from Estado_Cursor 
  into @PorcPartic, @SumaPorcPartic

While @@FETCH_STATUS = 0
Begin
  -- aqui haces lo que quieras ...
FETCH NEXT 
  FROM Estado_Cursor 
  into @Sublinea, @PorcPartic, @SumaPorcPartic
End
CLOSE Estado_Cursor
DEALLOCATE Estado_Cursor
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #10  
Antiguo 11-07-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 14
ivantj24 Va por buen camino
hola que tal fjcg02 muchisimas gracias pro tomarte tu tiempo, en realidad no se mucho sobre procedimientos almacenados, mas o menos utilizo uno para Folio, pero no los llevo a cabo muy seguido, te agradezco el codigo y lo revisare por que se que me puedo ahorrar demasiado codigo si los implemento en todos mis proyectos ya que en verdad que gaste lineas de codigo, asi que en verdad te agradesco la ayuda, y checare tu codigo muchas gracias y saludos
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
Suma de una columna de un DBGRID Pollo2004 Varios 20 29-10-2008 16:58:33
suma de una columna del Report megaredoxk Impresión 3 04-12-2007 14:05:11
suma de una columna en mysql coletaun MySQL 5 09-01-2006 14:29:38
Suma de elementos de una columna Mathom SQL 4 15-12-2005 18:49:24
Suma de Datos de Columna en paradox gersongelabert Tablas planas 2 14-08-2005 06:20:37


La franja horaria es GMT +2. Ahora son las 01:22:59.


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