Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Realizar una suma con SQL (https://www.clubdelphi.com/foros/showthread.php?t=68219)

pronto7 01-06-2010 14:40:10

Realizar una suma con SQL
 
tengo una tabla con muichos campos y necesito la suma de cada uno de ellos por registro... yo la tengo pero sumo un solo registro... pero sera que hay una manera de sumarlos todos pporque el codigo se me hace muy largo.. tengo esto y funciona perfectamente para uno solo


SET @v_2 = (Select sum(Precio_Basico_Grupo + Total_por_Hospit + Material_Med_Quir + Medicinas + Examen_Especial + Biopsia + Inst_Especial + Equipo_Especial + Mat_Especial + Interv_Quirurgica + TTO_Medico_P_O + Hon_Ayudantes + SAP + Hon_Anestesiologia + Hon_Instrumentista)
as Total
from Presupuesto
where Codigo = '0000000539')

UPDATE Presupuesto
set Costo = @v_1
where Codigo = '0000000539'

Casimiro Notevi 01-06-2010 14:46:35

Supongo que MSSql tendrá triggers, creo que esa es la mejor forma, creas uno que cada vez que se actualice un registro, se sumen los campos.

Neftali [Germán.Estévez] 01-06-2010 16:12:12

Hay que saber cuando quieres hacer la actualización. Si te interesa hacerla siempre que grabes o modifiques un registro, debes utilizar los TRIGGERS de Alta y Update.

Si te interesa hacerlo en un momento dado para todos los registros, lo que te sobre ahí es la clausula WHERE que te limita el núumero de registros.
Deberías poder hacer algo así:

Código SQL [-]
UPDATE Presupuesto 
SET Costo = 
(Precio_Basico_Grupo + Total_por_Hospit +  Material_Med_Quir + Medicinas + Examen_Especial + 
Biopsia +  Inst_Especial + Equipo_Especial + Mat_Especial + Interv_Quirurgica +  TTO_Medico_P_O + 
Hon_Ayudantes + SAP + Hon_Anestesiologia +  Hon_Instrumentista)

sinalocarlos 02-06-2010 00:23:51

Hola, solo agregando un comentario a la solucion que han mencionado neftali y casimiro. si lo que necesitas es conservar la sumatoria de los costos, y ese valor siempre sera igual a la sumatoria de los otros campos, puedes optar por manejar campos calculados, un ejemplo sencillo:

Hola, solo agregando un comentario a la solucion que han mencionado neftali y casimiro.

si lo que necesitas es conservar la sumatoria de los costos, y ese valor siempre sera igual a la sumatoria de los otros campos, puedes optar por manejar campos calculados, un ejemplo sencillo:
Código SQL [-]
CREATE TABLE test (
campo1 FLOAT,
campo2 FLOAT,
campo3 FLOAT,
suma AS campo1 + campo2 + campo3  )
GO

INSERT INTO dbo.test( campo1, campo2, campo3 ) VALUES  ( 3.141592654,2.7182818281,1.6)
INSERT INTO dbo.test( campo1, campo2, campo3 ) VALUES  ( 23 ,54,19)

GO

SELECT campo1, campo2, campo3, suma FROM dbo.test


Como puedes ver el campo suma es definido como la sumatoria de los otros campos, y al consultar algo sobre la tabla SQL SERVER retornara al sumatoria, puedes encontrar mucha info sobre estos campos en la ayuda del SQL

Saludos


La franja horaria es GMT +2. Ahora son las 23:28:32.

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