Consulta sencilla

01/03/2005 - 22:33 por SergioT | Informe spam
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie de
anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select CodItem,
Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que es
mas optimo calcular el saldo sobre el resultado de las sumas ya hecho,
parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que opinan??
Teniendo en cuenta que la consulta de saldos de stock será frecuente

Gracias
SergioT

Preguntas similare

Leer las respuestas

#1 MAXI
01/03/2005 - 23:44 | Informe spam
Hola, yo lo haria en una sola consulta todo, para sqlserver si tienes bien
definido los indices sera indistinto casi



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"SergioT" escribió en el mensaje
news:
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie de
anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select CodItem,
Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que es
mas optimo calcular el saldo sobre el resultado de las sumas ya hecho,
parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que
opinan?? Teniendo en cuenta que la consulta de saldos de stock será
frecuente

Gracias
SergioT

Respuesta Responder a este mensaje
#2 SergioT
02/03/2005 - 00:03 | Informe spam
Hola Maxi

Crees que no influye de manera notable el hecho de q la tabla tendrá cientos
de miles de registros???

Gracias

"MAXI" wrote in message
news:OiWo$
Hola, yo lo haria en una sola consulta todo, para sqlserver si tienes bien
definido los indices sera indistinto casi



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"SergioT" escribió en el mensaje
news:
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie
de anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select
CodItem, Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que es
mas optimo calcular el saldo sobre el resultado de las sumas ya hecho,
parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que
opinan?? Teniendo en cuenta que la consulta de saldos de stock será
frecuente

Gracias
SergioT





Respuesta Responder a este mensaje
#3 MAXI
02/03/2005 - 00:10 | Informe spam
Hola, si tienes buenos indices, no usas cursores ni subconsultas complejas
no vas a tener problemas.

Yo tengo un query bien grande para una tabla con mas de 10.000.000 de
registros y no tarda casi nada en resolver.



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"SergioT" escribió en el mensaje
news:%
Hola Maxi

Crees que no influye de manera notable el hecho de q la tabla tendrá
cientos de miles de registros???

Gracias

"MAXI" wrote in message
news:OiWo$
Hola, yo lo haria en una sola consulta todo, para sqlserver si tienes
bien definido los indices sera indistinto casi



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"SergioT" escribió en el mensaje
news:
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie
de anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select
CodItem, Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas
temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que
es mas optimo calcular el saldo sobre el resultado de las sumas ya
hecho, parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que
opinan?? Teniendo en cuenta que la consulta de saldos de stock será
frecuente

Gracias
SergioT









Respuesta Responder a este mensaje
#4 Juan Carlos Leguizamón
02/03/2005 - 04:08 | Informe spam
Para responder a la parte de tu pregunta sobre como se hace la consulta, la
forma es simplemente encerrando entre parentesis la subconsulta y poniendole
un alias, p.ej. así:

CREATE TABLE #uno (CodItem char(1), CantidadIng tinyint, CantidadSal
tinyint)
GO
INSERT INTO #uno SELECT 'A', 10, NULL
INSERT INTO #uno SELECT 'A', 15, NULL
INSERT INTO #uno SELECT 'A', NULL, 5
INSERT INTO #uno SELECT 'B', 50, NULL
GO
SELECT CodItem, CIng - CSal AS CSal FROM
(SELECT CodItem, SUM(ISNULL(CantidadIng,0)) AS CIng,
SUM(ISNULL(CantidadSal, 0)) AS CSal
FROM #uno GROUP BY CodItem) AS a


Saludos,

Juan Carlos Leguizamón


"SergioT" escribió en el mensaje
news:
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie de
anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select


CodItem,
Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que es
mas optimo calcular el saldo sobre el resultado de las sumas ya hecho,
parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que


opinan??
Teniendo en cuenta que la consulta de saldos de stock será frecuente

Gracias
SergioT


Respuesta Responder a este mensaje
#5 SergioT
02/03/2005 - 14:40 | Informe spam
gracias por tu codigo

Salu2
Sergio

"Juan Carlos Leguizamón" wrote in
message news:
Para responder a la parte de tu pregunta sobre como se hace la consulta,
la
forma es simplemente encerrando entre parentesis la subconsulta y
poniendole
un alias, p.ej. así:

CREATE TABLE #uno (CodItem char(1), CantidadIng tinyint, CantidadSal
tinyint)
GO
INSERT INTO #uno SELECT 'A', 10, NULL
INSERT INTO #uno SELECT 'A', 15, NULL
INSERT INTO #uno SELECT 'A', NULL, 5
INSERT INTO #uno SELECT 'B', 50, NULL
GO
SELECT CodItem, CIng - CSal AS CSal FROM
(SELECT CodItem, SUM(ISNULL(CantidadIng,0)) AS CIng,
SUM(ISNULL(CantidadSal, 0)) AS CSal
FROM #uno GROUP BY CodItem) AS a


Saludos,

Juan Carlos Leguizamón


"SergioT" escribió en el mensaje
news:
Hola

Como hago una consulta sobre el resultado de otra consulta, una especie
de
anidacion??? sin tener que crear una tabla con el resultado obtenido

Esto es basicamente lo que quiero lograr

Tengo una tabla q será grande y basicamente tiene

CodItem CantidadIng CantSal
A 10
A 15
A 5
B 50

Entonces quiero obtener una consulta de saldos por item osea:

CodItem CIng CSal Select


CodItem,
Sum(CantidadIng) as CIng, sum(CantidadSal) as CSal
A 25 5
B 50 0

Teniendo este resultado deseo hacer una consulta sobre este resultado de
forma que obtenga

CodItem Saldo Como haria la
consulta sobre el resultado anterior??, no quiero crear tablas temporales
A 20
B 50

Lo puedo lograr en una sola consulta eso es cierto, pero me parece que es
mas optimo calcular el saldo sobre el resultado de las sumas ya hecho,
parece menos trabajo para el SQL
Tal vez deberia crear una vista??? y trabajar sobre la vista. Que


opinan??
Teniendo en cuenta que la consulta de saldos de stock será frecuente

Gracias
SergioT






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