SQL - PROBLEMAS SELECT, SUM1() Y SUM2()

 
Vista:

PROBLEMAS SELECT, SUM1() Y SUM2()

Publicado por genosol (1 intervención) el 08/09/2009 10:44:36
Buenos días,

Tengo dos tablas. Una de horas asignadas a proyectos y otra con facturas de proyectos.
tabla horas: idpersonal, abreviado, idproyecto, horas
tabla facturas:idproyecto, totales (totalfactura)
Quería mostrar en un data grid idpersonal, idproyecto, horas_totales (por proyecto), total_factura (por proyecto)

Set rspro = New ADODB.Recordset
rspro.CursorLocation = adUseClient

He intentado hacerlo de varias formas pero siempre me da distintos errores (error agreado, no se han especificado parámetros requeridos, etc...)

sql = "SELECT HORAS.Idproyecto, sum(horas.horas) as HORAS_TOTALES, ISNULL(FACTURAS.SUM_TOTALES,0) AS TOTAL_FACTURAS FROM HORAS AS HORAS LEFT OUTER JOIN (SELECT sum(TOTALES) as SUM_TOTALES from FACTURAS GROUP BY idproyecto) as FACTURAS ON HORAS.IDPROYECTO=FACTURAS.IDPROYECTO GROUP BY HORAS.IDPROYECTO ORDER BY HORAS.IDPROYECTO"

También lo he intentado vinculándolas a una tabla más. Aquí si me muestra registros, pero los muestra mal. Los totales de las facturas están cuadriplicados y, a veces, las horas están duplicadas:

sql = "SELECT horas.idpersonal as ID, horas.abreviado as PERSONAL, horas.idproyecto as Nº_PROYECTO, sum(horas.horas) as HORAS_TOTALES, sum(facturas.totales) as TOTAL_FACTURAS from horas INNER JOIN (PROYECTO INNER JOIN FACTURAS ON proyecto.idproyecto=facturas.idproyecto) ON horas.idproyecto=proyecto.idproyecto group by horas.idpersonal, horas.abreviado, horas.idproyecto order by horas.idproyecto"

//error no se han especificado los parámetros requridos
sql = "Select horas.idpersonal as id, horas.abreviado as personal, horas.idproyecto as N_proyecto, horas.total_horas as HORAS_TOTALES,todo.sum_totales as TOTAL_FACTURA from (SELECT IDPERSONAL, ABREVIADO, IDPROYECTO, SUM(HORAS) AS TOTAL_HORAS FROM HORAS GROUP BY idpersonal, abreviado, IDPROYECTO) AS HORAS INNER JOIN (SELECT SUM(TOTALES) AS sum_totales FROM FACTURAS GROUP BY IDPROYECTO) AS TODO ON HORAS.IDPROYECTO=todo.IDPROYECTO"

rspro.Open sql, con, adOpenStatic, adLockReadOnly, adCmdText //Línea del error
Set DGproyectos.DataSource = rspro

No dejo de darle vueltas. Pero siempre termino en el error "no se ha especificado parámteros". Me pueden ayudar?

un saludo

Geni
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PROBLEMAS SELECT, SUM1() Y SUM2()

Publicado por Antonio (17 intervenciones) el 18/09/2009 08:17:08
Creo que es solo un problema de sintaxis, prueba con lo siguiente

SELECT HORAS.idpersonal,
HORAS. idproyecto,
SUM(HORAS.horas) as HORAS_TOTALES,
SUM(ISNULL(FACTURAS.totales,0)) AS TOTAL_FACTURAS

FROM HORAS LEFT JOIN FACTURAS
ON HORAS.idpersonal=FACTURAS.idpersonal and
HORAS. idproyecto= FACTURAS. idproyecto

GROUP BY HORAS.idpersonal,
HORAS. idproyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar