Porque no haces un query dinamico algo asi:
Código SQL:
Ver originalDECLARE @query VARCHAR(MAX)
SET @query='
SELECT SUM(RECIBOS.REC_ComCorreduria) AS Total,
OFICINAS.OFI_Nombre AS Oficina,
RECIBOS.REC_Efecto AS Fecha
FROM RECIBOS
INNER JOIN OFICINAS
ON RECIBOS.REC_OfiCode = OFICINAS.OFI_Code
WHERE RECIBOS.REC_Oficode IN (2,4,8,16,32,64,128,256,512,1024,2048,4096)
AND RECIBOS.REC_Situacion=5'
aqui tu condicion
SET @query=@query+ 'AND RECIBOS.REC_EFECTO < RECIBOS.REC_FACTURACION '
ELSE
otra cosa
-- (SI no se cumple esta , que tome como fecha la de RECIBOS.REC_FACTURACION)
SET @query=@query +
'AND year(RECIBOS.REC_Efecto) BETWEEN '2009' AND '2010'
GROUP BY OFICINAS.OFI_Nombre, RECIBOS.REC_Efecto
'
EXEC @query
Saludos!