El error de la cuenta es simple: En el WHERE estabas diciendo que solamente te mostrara los que tenían licencia... y eso asía.
Además de ello, si bien no es un error exactamente, la relación entre tablas no debe hacerse en el WEHRE porque no es optimizable. Se hace en el FROM a través de JOINS con la cláusula ON:
Código sql:
Ver originalSELECT
P.CodigoPrograma,
P.Descripcion Programa,
COUNT(EC.CodigoEquipoComputo) 'PCS',
COUNT(PI.FlagTieneLicencia) 'Pcs con licencia'
FROM
EquipoComputo EC
INNER JOIN ProgramasInstalados PI ON EC.CodigoEquipoComputo=PI.CodigoEquipoComputo
INNER JOIN Programas p ON PI.CodigoPrograma=P.CodigoPrograma
GROUP BY P.Descripcion;
Por otro lado, la consulta tal y como la planteas te devolverá cuántas PC tienen instalado el programa con y sin licencia, pero no te discriminará cuáles son las PCs.