如何使用sqlserver减去库存和销售

如何使用sqlserver减去库存和销售,sql,sql-server,database,Sql,Sql Server,Database,以下是递归表格式: 例如: 假设输入库存编号为500,数量(销售数量)为5,则剩余库存为495,在下一种情况下,当我销售输入库存中的其他项目时,必须为495而不是500,如果数量为6,则为489 如何使用sqlserver计算?? 以下是存储过程: select i.itemid,i.ItemName,i.EntryDate as 'Purchase Date',i.PurchaseRate as 'Purchase Amount', s.SaleDate,isnull(s.Total

以下是递归表格式:

例如:

假设输入库存编号为500,数量(销售数量)为5,则剩余库存为495,在下一种情况下,当我销售输入库存中的其他项目时,必须为495而不是500,如果数量为6,则为489

如何使用sqlserver计算?? 以下是存储过程:

   select i.itemid,i.ItemName,i.EntryDate as 'Purchase Date',i.PurchaseRate as 'Purchase Amount',
 s.SaleDate,isnull(s.TotalPrice,0)as 'SalesAmount',sum(i.quantity)as 'Input Stock',s.Quantity,
 sum(i.quantity)-sum(ISNULL(s.quantity,0)) as 'Remaining Stock'
 from Inv_Medicine i
 left join Inv_Sales s on s.itemid=i.itemid
 group by i.itemid,i.ItemName,i.EntryDate,i.PurchaseRate,s.SaleDate,s.TotalPrice,s.Quantity
以上查询不起作用..有什么建议吗

如何减去存货和销售

如果数量为6剩余库存489..取决于数据(动态输入库存和数量数据)

以下是Inv_Medicine和Inv_Sale表格格式和表格: 投资医学:

Inv_医药结构:

库存销售:

库存销售结构: manoj

请检查我的答案,它将帮助你。
如果您卡在任何地方,请告诉我。

hi@Manoj,itemid是否重复允许?请提供带有虚拟数据的库存药品和库存销售表结构。是itemid可能是duplicate@RonakPatel我已经给出了你刚刚检查过的表格格式,如果你需要任何修改,请建议我..在库存系统中,我想找到输入的总金额-总销售额..那么如何还有很多…主席先生,此查询仅给出一个值的输出(即扑热息痛)上面的代码对扑热息痛的效果非常好。我想要整个值,就像我的第一张表格图像一样,这里是递归表格格式:你的图像是正确的,但在我的例子中,它将只显示扑热息痛。如果假设它们没有销售,那么如果销售产品数量为空或为零,那么这个值也需要在你的咖啡糖浆的querysir中显示然后还需要获取值
DECLARE @date1 datetime='2017-01-25 04:48:03.830'
DECLARE @date2 datetime='2017-01-26 04:48:03.830'

 SELECT t1.*, CurrentStock = (isnull(t1.Quantity,0)-
  SUM(isnull(t2.salsesquantity,0)))+isnull(t1.salsesquantity,0),
  isnull(t1.salsesquantity,0)
  as SalesProductQunatity, RemainingStock = isnull(t1.Quantity,0)-
  SUM(isnull(t2.salsesquantity,0)) 

   FROM ( SELECT
  im.ItemName,im.PurchaseRate,Ins.SalesDate,ins.totalprice,ins.quantity
  as salsesquantity,im.Quantity , ROW_NUMBER()OVER( partition by
  Ins.itemId ORDER by ins.SalesDate) as ranknumbr  FROM 
  [dbo].[Inv_Medicine] IM LEFT JOIN [dbo].Inv_Sales Ins on
 IM.ItemId=Ins.ItemId ) t1

  INNER JOIN 
  ( SELECT
  im.ItemName,im.PurchaseRate,Ins.SalesDate,ins.totalprice,ins.quantity
 as salsesquantity,im.Quantity , ROW_NUMBER()OVER( partition by
 Ins.itemId ORDER by ins.SalesDate) as ranknumbr  FROM 
  [dbo].[Inv_Medicine] IM LEFT JOIN [dbo].Inv_Sales Ins on
  IM.ItemId=Ins.ItemId  ) as t2  



 ON t1.ranknumbr >= t2.ranknumbr AND t1.ItemName=t2.ItemName 
 WHERE t1.SalesDate BETWEEN @date1 AND @date2
 GROUP BY
  t1.ranknumbr,
 t1.SalesDate,t1.ItemName,t1.PurchaseRate,t1.totalprice,t1.salsesquantity,
 t1.Quantity,t2.    Quantity

   ORDER by t1.ItemName DESC