gracias por las respuestas, han tenido toda la razon el prome era la forma como comparaba en la subseleccion.
el codigo final me quedo así:
Código sql:
Ver originalSELECT
P.CodigoPrograma,P.Descripcion `Programa`,
COUNT(EC.CodigoEquipoComputo) `PCS`,
SUM(PI.FlagTieneLicencia) AS `Pcs con licencia`
FROM
EquipoComputo EC
INNER JOIN ProgramasInstalados PI USING(CodigoEquipoComputo)
INNER JOIN Programas p USING(CodigoPrograma)
WHERE
(YEAR(EC.FechaAdquisicion) BETWEEN 2000 AND 2002) AND
NOT (EC.CodigoEquipoComputo IN (SELECT
PM.CodigoEquipoComputo
FROM
PlanMantenimiento PM
WHERE
(YEAR(PM.FechaRevision)=2001)
GROUP BY (PM.CodigoEquipoComputo)
HAVING SUM(PM.CodigoEquipoComputo)>2
))
GROUP BY P .Descripcion
ORDER BY P.CodigoPrograma;
No se si pueden explicarme un poco la relacion que hacen con inner join, los entiendo en parte pero ese using que ponen usa exclusivamente un campo de la tabla?. Tambien vi que para renombrar no uso as.. como en esto: ProgramasInstalados PI
SI tienen ahi algo que me ayude a comprender los inner Join :D
saludos y gracias