Предполагая, что ваши таблицы StockIn и StockOut имеют столбец Сумма , вместо этого вопрос бессмысленный.
Итак, уродливый ипростой запрос:
SELECT
BeginningStockIn
IsNull(BeginningStockIn.Amount, 0)-IsNull(BeginningStockOut.Amount, 0) BeginningStock,
IsNull(PeriodStockIn.Amount, 0) StockIn,
IsNull(PeriodStockOut.Amount, 0) StockOut,
IsNull(BeginningStockIn.Amount, 0)-IsNull(BeginningStockOut.Amount, 0)+IsNull(PeriodStockIn.Amount, 0)-IsNull(PeriodStockOut.Amount, 0) StockBalance
FROM Product
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockIn
WHERE StockIn_Date < @StartDate
) BeginningStockIn ON BeginningStockIn.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockOut
WHERE StockOut_Date < @StartDate
) BeginningStockOut ON BeginningStockOut.Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockIn
WHERE StockIn_Date >= @StartDate AND StockIn_Date < @EndDate
) PeriodStockIn ON PeriodStockIn .Product_Code = Product.Product_Code
LEFT JOIN
(
SELECT
SUM(Amount) Amount,
Product_Code
FROM StockOut
WHERE StockOut_Date >= @StartDate AND StockOut_Date < @EndDate
) PeriodStockOut ON PeriodStockOut.Product_Code = Product.Product_Code
И ответ - чтобы создать хранимую процедуру, вы должны использовать оператор CREATE PROCEDURE
, как описано здесь
CREATE PROC YourProcName
@StartDate datetime,
@EndDate datetime
AS
BEGIN
SET NOCOUNT ON;
the query
END