Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/01/2010, 07:02
arruman
 
Fecha de Ingreso: diciembre-2008
Mensajes: 16
Antigüedad: 15 años, 5 meses
Puntos: 0
Consulta con subtotales

Buenos días,

Estoy dándole vueltas a una consulta que necesito sobre una bbdd.

Tengo 3 tablas relacionadas:
NS: codNS (PK), descripcion
Esta tabla guarda el código y la información general de una NS

Acciones_NS_Parque: codNS (PK), cod_Parque (PK), AE_prev
Guarda los códigos de parque afectados por una NS y el número de AE previstos para ese parque

Acciones_NS_AE: codNS (PK), cod_Parque (PK), codAE (PK), idEstado
Guarda la información de cada AE en un parque y para una NS. Además muestra el estado de cada AE
La idea es sacar una consulta que muestre para una NS su código, su descripción, el número de máquinas realizadas (son las que se corresponden con el estado 11), y el total de máquinas previstas.

El código empleado para la consulta es el siguiente:

Código:
SELECT dbo.Acciones_NS_AE.codNS AS [Código NS], dbo.NS.descripcion AS [Descripción], 
	COUNT(dbo.Acciones_NS_AE.codNS) AS [Máquinas realizadas], SUM(dbo.Acciones_NS_Parque.AE_prev) AS [Máquinas totales previstas], 
FROM dbo.Acciones_NS_AE INNER JOIN dbo.NS ON dbo.Acciones_NS_AE.codNS = dbo.NS.codNS 
	INNER JOIN dbo.Acciones_NS_Parque ON dbo.Acciones_NS_AE.cod_Parque = dbo.Acciones_NS_Parque.cod_Parque 
	AND dbo.Acciones_NS_AE.codNS = dbo.Acciones_NS_Parque.codNS WHERE (dbo.Acciones_NS_AE.idEstado = '11') 
GROUP BY dbo.Acciones_NS_AE.codNS, dbo.Acciones_NS_Parque.AE_prev, dbo.NS.codNS, dbo.NS.descripcion
pero no está bien el número de Máquinas totales previstas. Si consulto esta cifra en la tabla Acciones_NS_Parque exclusivamente no tengo problema:

Código:
SELECT dbo.Acciones_NS_Parque.codNS, SUM(dbo.Acciones_NS_Parque.AE_prev)
FROM dbo.Acciones_NS_Parque
GROUP BY dbo.Acciones_NS_Parque.codNS
Sin embargo, no obtengo el mismo resultado al utilizar la intersección entre tablas.

Espero que tengan alguna sugerencia. Muchas gracias.