SELECT dentro de SELECT

28/05/2009 - 19:16 por Angel Zapata | Informe spam
Estoy intentando hacer una consulta en la que varios campos salen de
consultas de totales de otras tablas, es decir:

Tengo un agente en la tabla Agentes, puede tener Abonos, Cargos o Anticipos
que están grabados en otras tablas de igual nombre y me gustaria tener un
registro solo con:
Agente, TotalAbonos, TotalCargos y TotalAnticipos que no hayan sido
procesados.

La consulta que ejecuto es la siguiente pero no me devuelve nada si en una
de las tablas secundarias no hay registros.

SELECT dbo.Agente.AgeCodigo,
(SELECT SUM(dbo.AgenteAbono.AboImporte)
FROM AgenteAbono
WHERE (AboAgeCodigo = 1) AND
(AboFechaComision IS NULL)) AS Abonos,
(SELECT SUM(dbo.AgenteAnticipo.AntCantidad)
FROM AgenteAnticipo
WHERE (AntAgeCodigo = 1) AND
(AntFechaComision IS NULL)) AS Anticipos,
(SELECT SUM(dbo.AgenteCargo.CarImporte)
FROM AgenteCargo
WHERE (CarAgeCodigo = 1) AND
(CarFechaComision IS NULL)) AS Cargos
FROM dbo.Agente FULL OUTER JOIN
dbo.AgenteCargo ON dbo.Agente.AgeCodigo =
dbo.AgenteCargo.CarAgeCodigo FULL OUTER JOIN
dbo.AgenteAnticipo ON dbo.Agente.AgeCodigo =
dbo.AgenteAnticipo.AntAgeCodigo FULL OUTER JOIN
dbo.AgenteAbono ON dbo.Agente.AgeCodigo =
dbo.AgenteAbono.AboAgeCodigo
WHERE (dbo.AgenteAbono.AboFechaComision IS NULL) AND
(dbo.AgenteAnticipo.AntFechaComision IS NULL) AND
(dbo.AgenteCargo.CarFechaComision IS NULL)
GROUP BY dbo.Agente.AgeCodigo
HAVING (dbo.Agente.AgeCodigo = 1)

Por favor, a los gurus de SQL, una ayudita.

Muchas gracias
Angel Zapata
 

Leer las respuestas

#1 demegares
17/08/2013 - 14:17 | Informe spam
Angel Zapata escribió el 28/05/2009 19:16 :
Estoy intentando hacer una consulta en la que varios campos salen de
consultas de totales de otras tablas, es decir:

Tengo un agente en la tabla Agentes, puede tener Abonos, Cargos o Anticipos
que están grabados en otras tablas de igual nombre y me gustaria tener
un
registro solo con:
Agente, TotalAbonos, TotalCargos y TotalAnticipos que no hayan sido
procesados.

La consulta que ejecuto es la siguiente pero no me devuelve nada si en una
de las tablas secundarias no hay registros.

SELECT dbo.Agente.AgeCodigo,
(SELECT SUM(dbo.AgenteAbono.AboImporte)
FROM AgenteAbono
WHERE (AboAgeCodigo = 1) AND
(AboFechaComision IS NULL)) AS Abonos,
(SELECT SUM(dbo.AgenteAnticipo.AntCantidad)
FROM AgenteAnticipo
WHERE (AntAgeCodigo = 1) AND
(AntFechaComision IS NULL)) AS Anticipos,
(SELECT SUM(dbo.AgenteCargo.CarImporte)
FROM AgenteCargo
WHERE (CarAgeCodigo = 1) AND
(CarFechaComision IS NULL)) AS Cargos
FROM dbo.Agente FULL OUTER JOIN
dbo.AgenteCargo ON dbo.Agente.AgeCodigo =
dbo.AgenteCargo.CarAgeCodigo FULL OUTER JOIN
dbo.AgenteAnticipo ON dbo.Agente.AgeCodigo =
dbo.AgenteAnticipo.AntAgeCodigo FULL OUTER JOIN
dbo.AgenteAbono ON dbo.Agente.AgeCodigo =
dbo.AgenteAbono.AboAgeCodigo
WHERE (dbo.AgenteAbono.AboFechaComision IS NULL) AND
(dbo.AgenteAnticipo.AntFechaComision IS NULL) AND
(dbo.AgenteCargo.CarFechaComision IS NULL)
GROUP BY dbo.Agente.AgeCodigo
HAVING (dbo.Agente.AgeCodigo = 1)

Por favor, a los gurus de SQL, una ayudita.

Muchas gracias
Angel Zapata


Gracias, ami tambien me sirvio mucho y me ayudo a continuar con el resto del codigo

muchas gracias Por compartir

Preguntas similares