Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

sumar campos de resultados subconsultas

Estas en el tema de sumar campos de resultados subconsultas en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo una duda y es la sigueinte. resulta que necesito saber si es posible sumar (o restar) dos campos que los obtengo ...
  #1 (permalink)  
Antiguo 02/06/2008, 08:11
 
Fecha de Ingreso: noviembre-2004
Mensajes: 371
Antigüedad: 20 años
Puntos: 0
sumar campos de resultados subconsultas

Hola a todos, tengo una duda y es la sigueinte.
resulta que necesito saber si es posible sumar (o restar) dos campos que los obtengo de una subconsulta... estos campos son los marcados en negrita.

SELECT datos_empleado.nombre, datos_empleado.rut,
(SELECT SUM(ansubl_i01 + ... subsil_i12) FROM anticipos
WHERE datos_empleado.rut = anticipos.rut) AS subsidios,
(SELECT SUM(montoco) FROM datos_pagos
WHERE datos_empleado.rut = datos_pagos.rut) AS pagos,
(SELECT SUM(deslic_i01 + .. deslic_i12)
FROM anticipos
WHERE datos_empleado.rut = anticipos.rut
) AS cobros
FROM datos_empleado

en algun momento intente algo como:

sum(cobros + pagos), pero me daba error... no estoy seguro que se pueda hacer algo asi... alguien me podria ayudar... de ante mano se agradece toda ayuda...
  #2 (permalink)  
Antiguo 02/06/2008, 08:16
Avatar de terepaima  
Fecha de Ingreso: junio-2008
Mensajes: 82
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: sumar campos de resultados subconsultas

Hola

Es imperativo que tengas que hacer la suma en el query?

No la puedes hacer al momento de presentar los datos?
  #3 (permalink)  
Antiguo 02/06/2008, 08:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: sumar campos de resultados subconsultas

select nombre, rut, subsidios, pagos, anticipos-cobros as pendiente from (


SELECT datos_empleado.nombre, datos_empleado.rut,
(SELECT SUM(ansubl_i01 + ... subsil_i12) FROM anticipos
WHERE datos_empleado.rut = anticipos.rut) AS subsidios,
(SELECT SUM(montoco) FROM datos_pagos
WHERE datos_empleado.rut = datos_pagos.rut) AS pagos,
(SELECT SUM(deslic_i01 + .. deslic_i12)
FROM anticipos
WHERE datos_empleado.rut = anticipos.rut
) AS cobros
FROM datos_empleado

) foo

Un saludo
  #4 (permalink)  
Antiguo 02/06/2008, 08:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: sumar campos de resultados subconsultas

Bueno ahora dejando de lado lo que querias hacer, esa select con subselects la podrias hacer con JOIN, SUM y GROUP BY y sería mucho más eficiente.

Salu2
  #5 (permalink)  
Antiguo 02/06/2008, 08:38
 
Fecha de Ingreso: noviembre-2004
Mensajes: 371
Antigüedad: 20 años
Puntos: 0
Respuesta: sumar campos de resultados subconsultas

tengo que sumar en la consulta ya que tengo que lograr ordenar los datos (en la presnetacion) en orden > a < y < a > y se me hace mas facil hacerlo de esa forma... puedo estar en un error el cual me lo indican y lo discutimos...
bueno intentare implementar la solucion propuesta y ver que tal me va con los Join o Gruop by... por que son mas optimas estas soluciones que?
  #6 (permalink)  
Antiguo 02/06/2008, 09:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: sumar campos de resultados subconsultas

prueba esto:
quita los alias de cada uno, pon los signos + o - entre ellos (yo los he puesto a ojo, para que veas cómo van), como en el ej. y pon un alias al final.
SELECT datos_empleado.nombre, datos_empleado.rut,
(SELECT SUM(ansubl_i01 + subsil_i12) FROM anticipos
WHERE datos_empleado.rut = anticipos.rut) + (SELECT SUM(montoco) FROM datos_pagos
WHERE datos_empleado.rut = datos_pagos.rut) - (SELECT SUM(deslic_i01 + deslic_i12)
FROM anticipos
WHERE datos_empleado.rut = anticipos.rut
) AS TOTAL
FROM datos_empleado

EDITO: esto puede ser una solución, pero no es lo mejor: te hago la misma recomendación que Seyko.

Última edición por jurena; 02/06/2008 a las 09:17
  #7 (permalink)  
Antiguo 02/06/2008, 09:27
 
Fecha de Ingreso: noviembre-2004
Mensajes: 371
Antigüedad: 20 años
Puntos: 0
Respuesta: sumar campos de resultados subconsultas

sEIKO, si quiero darle un ORDER BY donde lo incluyo?

SELECT datos_empleado.nombre, datos_empleado.rut,
(SELECT SUM(ansubl_i01 + ... subsil_i12) FROM anticipos
WHERE datos_empleado.rut = anticipos.rut) AS subsidios,
(SELECT SUM(montoco) FROM datos_pagos
WHERE datos_empleado.rut = datos_pagos.rut) AS pagos,
(SELECT SUM(deslic_i01 + .. deslic_i12)
FROM anticipos
WHERE datos_empleado.rut = anticipos.rut
) AS cobros
FROM datos_empleado
WHERE Fecha_ret = '01/01/3000'
ORDER BY subsidios ASC
) foo

me da error con order by:
The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

porque ocurre este error y como lo evito?

saludos y gracias por los aportes.
  #8 (permalink)  
Antiguo 03/06/2008, 02:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: sumar campos de resultados subconsultas

La clausula de order by siempre va al final
....
) foo
order by ...

Es más eficiente que las subconsultas, porque por cada registro que saques se hace una subconsulta, tu tienes 3 subconsultas dentro de tu select, si tienes 1000 registros tiras 3001 consultas.

salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.