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 ;).