Lo que puede pasar es que con un rango solo te arroja un proveedor y con otro rango de arroja mas de un provedor, no puedes usar ese tipo de sentencias cuando te regresa mas de un resultado el subquery, lo mejor seria hacerlo de esta manera:
Código SQL:
Ver originalSELECT Folio,t1.Proveedor, FechaFactura AS 'Fecha de Factura', Monto, t2.Credito,Moneda, '30 Dias' = CASE WHEN datediff(DAY,FechaFactura,getdate())<= 30 THEN DATEDIFF(DAY, FechaFactura, getdate()) ELSE '0' END,'60 Dias' = CASE WHEN datediff(DAY,FechaFactura,getdate())>30 AND datediff(DAY,FechaFactura,getdate())<= 60 THEN DATEDIFF(DAY, FechaFactura, getdate()) ELSE '0' END,'90 Dias' = CASE WHEN datediff(DAY,FechaFactura,getdate())>60 THEN DATEDIFF(DAY, FechaFactura, getdate()) ELSE '0' END FROM CXP AS t1
LEFT JOIN (SELECT credito, proveedor FROM proveedor) AS t2 ON (t1.nombre=t2.proveedor)
WHERE (FechaFactura BETWEEN '2016-02-01' AND '2016-02-29') AND Pagada = 'No'