Código:
select *
FROM dbo.Cmp_LiqImp AS li
INNER JOIN
dbo.Cmp_LiqImpFactura AS lif
ON (Falta condiciones de union)
INNER JOIN
dbo.Cmp_Compra AS detcom ON
1 = (Case When @PI_IdCriterio is null Then 1
Else
case @PI_IdCriterio
when 1 then Case When li.IdLiqImp = CAST(@PI_Criterio AS INT) Then 1 Else 0 End --// #Liquid
when 2 then Case When detcom.GuiaRemision = @PI_Criterio Then 1 Else 0 End --// #Guia
when 3 then Case When li.IdOC = @PI_Criterio Then 1 Else 0 End --// #OC
End
End
)
Where li.IdEmpresa=@PI_IdEmpresa And
li.IdOficina=@PI_IdOficina

aunque seria mejor que enviaras tal cual los parametros de cada tabla, ya que eso de tener un solo parametro y un identificador para saber a que tabla va a filtar hace las cosas mas confunsas y propensas a errores....

Saludos!