我正在做仓库管理系统,出库的时候要求用户录入出库计划,
就是出库哪种货品 出库数量是多少,如以下结果
proid 产品名称 产品数量
1 纯牛奶 100
2 酸牛奶 150
3 高钙奶 120根据这个出库计划如何用存储过程查询
库存表中 推荐的数量 库存表结果如下
proid 产品名称 仓库名称 数量
1 纯牛奶 A仓库 50
1 纯牛奶 B仓库 50
1 纯牛奶 C仓库 200
2 酸牛奶 D仓库 1000
3 高钙奶 E仓库 150推荐的结果为
proid 产品名称 产品数量 仓库名称
1 纯牛奶 50 A仓库
2 纯牛奶 50 B仓库
3 酸牛奶 150 D仓库
4 高钙奶 120 E仓库如何用存储过程推荐成以上结果,我不清楚如何将出库计划 作为存储过程参数 如何查询出推荐结果?
请大家指教!
就是出库哪种货品 出库数量是多少,如以下结果
proid 产品名称 产品数量
1 纯牛奶 100
2 酸牛奶 150
3 高钙奶 120根据这个出库计划如何用存储过程查询
库存表中 推荐的数量 库存表结果如下
proid 产品名称 仓库名称 数量
1 纯牛奶 A仓库 50
1 纯牛奶 B仓库 50
1 纯牛奶 C仓库 200
2 酸牛奶 D仓库 1000
3 高钙奶 E仓库 150推荐的结果为
proid 产品名称 产品数量 仓库名称
1 纯牛奶 50 A仓库
2 纯牛奶 50 B仓库
3 酸牛奶 150 D仓库
4 高钙奶 120 E仓库如何用存储过程推荐成以上结果,我不清楚如何将出库计划 作为存储过程参数 如何查询出推荐结果?
请大家指教!
DECLARE @TA TABLE([proid] INT, [产品名称] NVARCHAR(3), [产品数量] INT)
INSERT @TA
SELECT 1, N'纯牛奶', 100 UNION ALL
SELECT 2, N'酸牛奶', 150 UNION ALL
SELECT 3, N'高钙奶', 120DECLARE @TB TABLE([proid] INT, [产品名称] NVARCHAR(3), [仓库名称] NVARCHAR(3), [数量] INT)
INSERT @TB
SELECT 1, N'纯牛奶', N'A仓库', 50 UNION ALL
SELECT 1, N'纯牛奶', N'B仓库', 50 UNION ALL
SELECT 1, N'纯牛奶', N'C仓库', 200 UNION ALL
SELECT 2, N'酸牛奶', N'D仓库', 1000 UNION ALL
SELECT 3, N'高钙奶', N'E仓库', 150;WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER(PARTITION BY [proid] ORDER BY [proid]) AS SEQ FROM @TB
),
CTE2 AS
(
SELECT *,(SELECT SUM([数量]) FROM CTE WHERE [产品名称]=T.[产品名称] AND SEQ<=T.SEQ) AS QTY FROM CTE AS T
)
SELECT CTE2.[proid],CTE2.[产品名称],CTE2.[仓库名称],
CASE WHEN [产品数量]-QTY>0 THEN [数量] ELSE [数量]+([产品数量]-QTY) END
FROM CTE2 JOIN @TA AS A
ON CTE2.[proid]=A.[proid]
WHERE CASE WHEN [产品数量]-QTY>0 THEN [数量] ELSE [产品数量]-QTY+[数量] END>0
/*
proid 产品名称 仓库名称
----------- ---- ---- -----------
1 纯牛奶 A仓库 50
1 纯牛奶 B仓库 50
2 酸牛奶 D仓库 150
3 高钙奶 E仓库 120*/