--F_BookId
DECLARE @F_BookId INT;
--Sum(F_Count)
DECLARE @SumCount INT;
--游标1
DECLARE cursor1 CURSOR FOR
SELECT F_BookId
FROM T_Warehouse
GROUP BY F_BookId
HAVING SUM(F_Count) !=
(
-- 取出最后一条stock信息
SELECT a.F_Stock AS F_Stock
FROM T_Warehouse a,
(
SELECT F_BookId,
MAX(F_Time) AS F_Time
FROM T_Warehouse
GROUP BY F_BookId
) b
WHERE a.F_BookId = b.F_BookId
AND a.F_Time = b.F_Time
AND a.F_BookId = dbo.T_Warehouse.F_BookId
);
OPEN cursor1;
FETCH NEXT FROM cursor1
INTO @F_BookId;
WHILE @@fetch_status = 0
BEGIN
SELECT @SumCount = SUM(F_Count)
FROM T_Warehouse AS TW
GROUP BY F_BookId
HAVING SUM(F_Count) !=
(
-- 取出最后一条stock信息
SELECT a.F_Stock AS F_Stock
FROM T_Warehouse a,
(
SELECT F_BookId,
MAX(F_Time) AS F_Time
FROM T_Warehouse T1
WHERE T1.F_BookId = @F_BookId
GROUP BY F_BookId
) b
WHERE a.F_BookId = b.F_BookId
AND a.F_Time = b.F_Time
AND a.F_BookId = TW.F_BookId
);
SELECT @F_BookId AS FookId,@SumCount AS SumCount
--更新操作!!!
--UPDATE dbo.T_Warehouse
--SET F_Stock = @SumCount
--WHERE Id IN (
-- SELECT MAX(Id)
-- FROM T_Warehouse
-- WHERE F_BookId = @F_BookId
-- GROUP BY F_BookId
--)
FETCH NEXT FROM cursor1
INTO @F_BookId;
END;
CLOSE cursor1;
DEALLOCATE cursor1;
客户遇到一些数据不准的问题,给客户纠正一下。 就拼凑了这个存储过程