Я хотел бы передать переменную \ параметр в представление для фильтрации по диапазону дат. Поскольку я группирую в представлении, я не могу поместить предложение where за пределы представления.
Я прочитал кучу сообщений по этому поводу, но пока не могу заставить его работать. Большинство обходных путей, которые я видел для передачи параметра в представление, включают использование функции для возврата значения, и именно здесь я застреваю.
/* My current view that I want to pass in start and end dates */
CREATE VIEW Total_Sales_By_Product_Num AS
SELECT products_all_fields.*,
Sum(<a bunch of code removed for this sample>) AS Item_Qty_Requested_Total,
Sum(<a bunch of code removed for this sample>) AS Item_Qty_Accepted_Total,
Sum(<a bunch of code removed for this sample>) AS Total_Sales_Dollars
FROM products_all_fields
LEFT OUTER JOIN (web_orders_items
INNER JOIN web_orders_header
ON web_orders_items.Web_Order_Num = web_orders_header.Web_Order_Num )
ON products_all_fields.Product_Num = web_orders_items.Product_Num
WHERE web_orders_header.Order_Date BETWEEN fn_GetStartDate() AND fn_GetEndDate()
GROUP BY products_all_fields.Product_Num
ORDER BY products_all_fields.Description
Функции для возврата параметров в представление:
CREATE FUNCTION fn_GetStartDate ()
RETURNS DATE
DETERMINISTIC NO SQL
BEGIN
RETURN @StartDate;
END
CREATE FUNCTION fn_GetEndDate ()
RETURNS DATE
DETERMINISTIC NO SQL
BEGIN
RETURN @EndDate;
END
Это не работает, не возвращает данных, я знаю, что делаю глупость
set @fn_StartDate := '2012-01-01';
set @fn_EndDate := '2012-02-01';
select * from Total_Sales_By_Product_Num
Спасибо за любую помощь!