Sql 创建库存分类账查询
我想从此表创建股票分类账 我想得到这样的结果。Sql 创建库存分类账查询,sql,sql-server,Sql,Sql Server,我想从此表创建股票分类账 我想得到这样的结果。 假设您希望每个仓库中的每个产品都有一个运行平衡,这应该让您开始了解如何实现您想要的。如果您需要以不同的方式对产品和仓库进行聚合,我将留给您来解决 这里的关键部分是在over窗口函数子句中使用orderby。这样做的目的是以InvoiceDate顺序对当前on之前的所有行进行求和: declare @t table(InvoiceDate date,InvoiceNo nvarchar(20),ProductId int,WareHouseId
假设您希望每个仓库中的每个产品都有一个运行平衡,这应该让您开始了解如何实现您想要的。如果您需要以不同的方式对产品和仓库进行聚合,我将留给您来解决
这里的关键部分是在
over
窗口函数子句中使用orderby
。这样做的目的是以InvoiceDate
顺序对当前on之前的所有行进行求和:
declare @t table(InvoiceDate date,InvoiceNo nvarchar(20),ProductId int,WareHouseId int,StockIn int, StockOut int);
insert into @t values('20180211','11218',2,2,100,0),('20180301','march18',1002,2,30,0),('20180701','july2018',1003,2,50,0),('20180701','july2018',1002,2,100,0),('20180301','SI-00001',1002,2,0,20),('20180301','SI-00002',1002,2,0,5),('20180317','20180317',1003,3009,50,0),('20180317','20180317',1010,3009,30,0),('20180317','20180317',1012,3009,25,0),('20180301','SI-18-03-1',1002,3009,0,20),('20180301','ST-18-03-01',1003,3009,50,0);
select t.WareHouseId
,t.InvoiceNo
,t.ProductId
,t.StockIn
,t.StockOut
,sum(t.StockIn) over (partition by t.WareHouseID, t.ProductId order by t.InvoiceDate, t.InvoiceNo)
-sum(t.StockOut) over (partition by t.WareHouseID, t.ProductId order by t.InvoiceDate, t.InvoiceNo) as Balance
from @t as t
order by t.WareHouseId
,t.ProductId
,t.InvoiceDate
,t.InvoiceNo;
输出:
+-------------+-------------+-----------+---------+----------+---------+
| WareHouseId | InvoiceNo | ProductId | StockIn | StockOut | Balance |
+-------------+-------------+-----------+---------+----------+---------+
| 2 | 11218 | 2 | 100 | 0 | 100 |
| 2 | march18 | 1002 | 30 | 0 | 30 |
| 2 | SI-00001 | 1002 | 0 | 20 | 10 |
| 2 | SI-00002 | 1002 | 0 | 5 | 5 |
| 2 | july2018 | 1002 | 100 | 0 | 105 |
| 2 | july2018 | 1003 | 50 | 0 | 50 |
| 3009 | SI-18-03-1 | 1002 | 0 | 20 | -20 |
| 3009 | ST-18-03-01 | 1003 | 50 | 0 | 50 |
| 3009 | 20180317 | 1003 | 50 | 0 | 100 |
| 3009 | 20180317 | 1010 | 30 | 0 | 30 |
| 3009 | 20180317 | 1012 | 25 | 0 | 25 |
+-------------+-------------+-----------+---------+----------+---------+
到目前为止你试过什么?图片对样本数据没有帮助。使用示例数据和预期结果添加实际表结构。这将更加清晰。您如何从源表中知道
库存日期
是什么?库存日期已经在源表中,而不是您在问题中包含的库存日期。请确保所有相关信息都在您的问题中。我们无法访问您的数据库。