Instruccion SQL que me tiene loco

29/10/2003 - 10:20 por Sanchez Arnoletto Martin Rodrigo | Informe spam
Hola grupo:
Estoy en SQL server 2000 y tengo que hacer un calculo compejo:

en la instruccion:
SELECT CANTIDAD * ISNULL
((SELECT precio
FROM costosprov
WHERE idcomponente armado.com_idcomponente AND predeterminado= 1), 0) AS precio
FROM ARMADO
WHERE (IDCOMPONENTE = 'A0401.0010')

esto da un listado de valores con los precios totales de un componente ( el
'A0401.0010')

pero lo que necesito es LA SUMATORIA de esos valores en una variable

la instruccion:
SELECT sum (CANTIDAD * ISNULL
((SELECT precio
FROM costosprov
WHERE idcomponente armado.com_idcomponente AND predeterminado= 1), 0)) AS precio
FROM ARMADO
WHERE (IDCOMPONENTE = 'A0401.0010')
era la solucion que habia pensado, pero me devuelve un error que dice que no
se pueden usar subconsultas dentro de una instruccion SUM

como puedo armarlo? algunas ideas?

Gracias desde ya

Saludos...



Ing. Martin Rodrigo Sanchez Arnoletto
Islas Baleares - España
mrsarnolettoQUITAR@hotmail.QUITARcom

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
29/10/2003 - 10:41 | Informe spam
Puedes utilizar tu consulta actual como tabla de origen para otra consulta donde hagas el SUM; por
ejemplo:

SELECT SUM(subcons.Precio) AS Total FROM
(
SELECT Cantidad * ISNULL(
(
SELECT Precio
FROM Costosprov
WHERE IdComponente = Armado.Com_IdComponente
AND Predeterminado= 1
), 0) AS Precio
FROM Armado
WHERE IdComponente = 'A0401.0010'
) AS subcons

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#2 Carlos Sacristan
29/10/2003 - 10:53 | Informe spam
Postea las sentencias de creación de las tablas y seguro te podremos
ayudar mejor



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Sanchez Arnoletto Martin Rodrigo" escribió en el
mensaje news:#
Hola grupo:
Estoy en SQL server 2000 y tengo que hacer un calculo compejo:

en la instruccion:
SELECT CANTIDAD * ISNULL
((SELECT precio
FROM costosprov
WHERE idcomponente > armado.com_idcomponente AND predeterminado= 1), 0) AS precio
FROM ARMADO
WHERE (IDCOMPONENTE = 'A0401.0010')

esto da un listado de valores con los precios totales de un componente (


el
'A0401.0010')

pero lo que necesito es LA SUMATORIA de esos valores en una variable

la instruccion:
SELECT sum (CANTIDAD * ISNULL
((SELECT precio
FROM costosprov
WHERE idcomponente > armado.com_idcomponente AND predeterminado= 1), 0)) AS precio
FROM ARMADO
WHERE (IDCOMPONENTE = 'A0401.0010')
era la solucion que habia pensado, pero me devuelve un error que dice que


no
se pueden usar subconsultas dentro de una instruccion SUM

como puedo armarlo? algunas ideas?

Gracias desde ya

Saludos...



Ing. Martin Rodrigo Sanchez Arnoletto
Islas Baleares - España



Respuesta Responder a este mensaje
#3 Sanchez Arnoletto Martin Rodrigo
29/10/2003 - 12:42 | Informe spam
Muchisimas gracias Ruben esa era la forma



Saludos...



Ing. Martin Rodrigo Sanchez Arnoletto
Islas Baleares - España

Respuesta Responder a este mensaje
#4 Liliana Sorrentino
29/10/2003 - 17:29 | Informe spam
Hola Martín,
No tengo nada en contra de las subconsultas, pero este query me parece más
simple y con mejor plan de ejecución, al menos que no cumpla con condiciones
que no conocemos.
Saludos... Liliana.

SELECT com_idcomponente, SUM(cantidad * ISNULL(precio, 0))
FROM #armado
LEFT JOIN #costosprov ON idcomponente = com_idcomponente AND predeterminado1
WHERE com_idcomponente = 'A0401.0010'
GROUP BY com_idcomponente

"Sanchez Arnoletto Martin Rodrigo" escribió en el
mensaje news:e$
Muchisimas gracias Ruben esa era la forma



Saludos...



Ing. Martin Rodrigo Sanchez Arnoletto
Islas Baleares - España



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida