Cita:  
					Iniciado por Beakdan  
  No sé que motor de BD estás usando, pero lo siguiente te puede ayudar:
 
Código:
 DECLARE @IdPedido INT, @IdAlbaran INT, @IdTasa INT
SET @IdPedido = 200
SET @IdAlbaran = 1
SET @IdTasa = NULL
 
SELECT      *--Tu lista de campos
FROM        Factura AS f
INNER JOIN  Pedido AS p
          ON p.IdFactura = f.IdFactura
          AND p.IdPedido = COALESCE(@IdPedido, p.IdPedido)
INNER JOIN  Albaran AS a
          ON a.IdFactura = f.IdFactura
          AND a.IdAlbaran = COALESCE(@IdAlbaran, a.IdAlbaran)
INNER JOIN  Tasa AS t
          ON t.IdFactura = f.IdFactura
          AND t.IdTasa = COALESCE(@IdTasa, t.IdTasa)   Lo que pases como NULL no será filtrado. Tu otra opción es SQL Dinámico.
   
Tengo que hacerlo en SQL puro y duro para hacer un "dataservices sql" ya que es un filter dinamico en un WebServices (cuya parte de dataservices y webservices estamos desarrollando con Bea Weblogic 8.1)...Mi duda era esa...que si yo no le meto alguno de los campos ya sea tasa,pedido o albaran me da un error.Imagino que debo controlar cuando sea nulo y meterle a fuego el NULL para que se lo trague.Con este dataservices sql debo obtener el resultado (dado por un esquema) y debo volver a filtrar por otros criterios.Probare esto que me has pasado a ver si me funciona mañana.Muchas gracias man ;).