Consulta Totales

02/12/2007 - 21:19 por Akhenaton | Informe spam
Hola.
se me ha plantedo la siguiente consulta y no se como solucionarla.

SELECT Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
MIN(Contratos.FInicio) AS Inicio,
MAX(Contratos.FInicio) AS Fin, SUM(Contratos.Importe)
AS Importe, YEAR(Contratos.FInicio) AS Año
FROM Contratos INNER JOIN
Proveedor ON Contratos.Proveedor = Proveedor.Proveedor
GROUP BY Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
YEAR(Contratos.FInicio)
ORDER BY Proveedor.Proveedor

Esta devuelve los datos correctos, la suma de los importes agrupados por
año, contrato.
y ahora quisiera añadirle los importe ya pagados si los hay tambien
agrupados por años, contrato
la tabla contratos tiene un campo Factura que indica si se ha pagado el
importe correspondiente, por lo que la consulta quedaria como:

SELECT SUM(Importe) AS Pendiente
FROM Contratos
WHERE (Factura = '' OR Factura IS NULL)
GROUP BY Contrato, YEAR(FInicio)

he intentado sin exito.
SELECT Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
MIN(Contratos.FInicio) AS Inicio,
MAX(Contratos.FInicio) AS Fin, SUM(Contratos.Importe)
AS Importe, YEAR(Contratos.FInicio) AS Año,
(SELECT SUM(Importe) AS Exp1
FROM Contratos
WHERE (Factura = '' OR Factura IS NULL)
GROUP BY Contrato, YEAR(FInicio)) AS Pendiente
FROM Contratos INNER JOIN Proveedor ON Contratos.Proveedor =
Proveedor.Proveedor
GROUP BY Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
YEAR(Contratos.FInicio)
ORDER BY Proveedor.Proveedor

alguna solucion para que una sola consulta devuelva los datos correctos.
 

Leer las respuestas

#1 Maxi
03/12/2007 - 14:31 | Informe spam
Hola, nos ayuda a ayudarlo? cual es la estructura de las tablas? podria
poner algunos datos de ejemplo? podria poner los resultados esperados?


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Akhenaton" escribió en el mensaje
news:
Hola.
se me ha plantedo la siguiente consulta y no se como solucionarla.

SELECT Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
MIN(Contratos.FInicio) AS Inicio,
MAX(Contratos.FInicio) AS Fin, SUM(Contratos.Importe)
AS Importe, YEAR(Contratos.FInicio) AS Año
FROM Contratos INNER JOIN
Proveedor ON Contratos.Proveedor = Proveedor.Proveedor
GROUP BY Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
YEAR(Contratos.FInicio)
ORDER BY Proveedor.Proveedor

Esta devuelve los datos correctos, la suma de los importes agrupados por
año, contrato.
y ahora quisiera añadirle los importe ya pagados si los hay tambien
agrupados por años, contrato
la tabla contratos tiene un campo Factura que indica si se ha pagado el
importe correspondiente, por lo que la consulta quedaria como:

SELECT SUM(Importe) AS Pendiente
FROM Contratos
WHERE (Factura = '' OR Factura IS NULL)
GROUP BY Contrato, YEAR(FInicio)

he intentado sin exito.
SELECT Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
MIN(Contratos.FInicio) AS Inicio,
MAX(Contratos.FInicio) AS Fin, SUM(Contratos.Importe)
AS Importe, YEAR(Contratos.FInicio) AS Año,
(SELECT SUM(Importe) AS Exp1
FROM Contratos
WHERE (Factura = '' OR Factura IS NULL)
GROUP BY Contrato, YEAR(FInicio)) AS Pendiente
FROM Contratos INNER JOIN Proveedor ON Contratos.Proveedor =
Proveedor.Proveedor
GROUP BY Proveedor.Proveedor, Proveedor.Nombre, Contratos.Contrato,
YEAR(Contratos.FInicio)
ORDER BY Proveedor.Proveedor

alguna solucion para que una sola consulta devuelva los datos correctos.



Preguntas similares