Если orderid is not null
то в SQL запросе я хочу добавитьхранимой процедуры SQL Server Dynamic, когда условие
and SODtl.OrderID = @OrderID.
У меня есть использовать 2 запросов на выборку. Я хочу только одно заявление о выборе
ALTER PROCEDURE [dbo].[SOReg_Select]
@OrderID int=null,
@From date =null,
@To date=null
AS
begin
if @OrderID is null
begin
SELECT
SODtl.OrderID, SODtl.OrderLine, Products.ProductName,
SODtl.Style, SODtl.Width, SODtl.Size, Color.Color,
SODtl.Quantity, Uom.Name, SODtl.Rate, SODtl.Amount,
SODtl.BalQty, SODtl.Remark, SOHdr.OrderDate,
Customers.ContactName, SOHdr.RefNo, SOHdr.RefDate,
SOHdr.Payment, SOHdr.Terms, SOHdr.Remarks
FROM
Products
RIGHT OUTER JOIN
SODtl
LEFT OUTER JOIN
Uom ON SODtl.UomID = Uom.UomID
LEFT OUTER JOIN
Color ON SODtl.ColorID = Color.ColorID ON Products.ProductID = SODtl.ProductID
LEFT OUTER JOIN
Customers
RIGHT OUTER JOIN
SOHdr ON Customers.CustomerID = SOHdr.CustomerID ON SODtl.OrderID = SOHdr.OrderID
WHERE
OrderDate BETWEEN @From AND @To
end
else
begin
SELECT
SODtl.OrderID, SODtl.OrderLine, Products.ProductName,
SODtl.Style, SODtl.Width, SODtl.Size, Color.Color,
SODtl.Quantity, Uom.Name, SODtl.Rate, SODtl.Amount,
SODtl.BalQty, SODtl.Remark, SOHdr.OrderDate,
Customers.ContactName, SOHdr.RefNo, SOHdr.RefDate,
SOHdr.Payment, SOHdr.Terms, SOHdr.Remarks
FROM
Products
RIGHT OUTER JOIN
SODtl
LEFT OUTER JOIN
Uom ON SODtl.UomID = Uom.UomID
LEFT OUTER JOIN
Color ON SODtl.ColorID = Color.ColorID ON Products.ProductID = SODtl.ProductID
LEFT OUTER JOIN
Customers
RIGHT OUTER JOIN
SOHdr ON Customers.CustomerID = SOHdr.CustomerID ON SODtl.OrderID = SOHdr.OrderID
WHERE
OrderDate BETWEEN @From AND @To
AND SODtl.OrderID = @OrderID
end
end
Это то, что я сделал. Я хочу, чтобы запрос, чтобы упростить и не хочет повторения оператора выбора
Смешивание ЛЕВЫЙ JOINS с ПРАВЕ JOINS, как ... с ума! Btw, в какую таблицу входит столбец OrderDate? – jarlh
Используйте функцию COALESCE для 'If not null, затем получите значение' части запроса. это что-то вроде OrderID = Coalesce (@OrderID, OrderID) или что-то в этом роде. Я не помню точного синтаксиса, но читал о функции Coalesce, и вы получите эту идею. –