下面是递归表格式:

示例:
假设我有输入库存编号为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以上查询不包括working..any建议?
如何减去库存和销售??
我想替代500必须是495和495以后,如果数量是6个剩余库存,489..depends对数据(动态输入库存和数量数据)
下面是Inv_Medicine和Inv_Sale表格式和表: Inv_Medicine:

Inv_Medicine结构:

Inv_Sale:

Inv_Sale结构:

发布于 2017-01-25 13:18:35

马诺伊
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请检查我的答案,它会帮助你。如果你在什么地方逗留,请告诉我。
https://stackoverflow.com/questions/41850151
复制相似问题