我正在做仓库管理系统,出库的时候要求用户录入出库计划,
就是出库哪种货品 出库数量是多少,如以下结果
 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仓库如何用存储过程推荐成以上结果,我不清楚如何将出库计划 作为存储过程参数 如何查询出推荐结果?
请大家指教! 

解决方案 »

  1.   

    yi tiao yi tiao de zuo
      

  2.   

    huo zhe xian fang dao lin shi biao li a
      

  3.   

    --参考楼主另一贴的
    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*/