标签: running-balance

SQL Server:运行Sum()Over Partition

我正在使用SQL Server 2017作为后端存储表和视图的MS Access前端.

我想根据股票交易表计算(在SQL Server端)Stockhouses(Bestand),剩余库存(Restbestand)和预留库存(Reserviert)来自仓库(Lager)和现场仓库(Baustelle).

交易可能是盘点(Bestandserfassung),stockcorrection(Bestandskorrektur),转移到库存(Einlagern),库存释放(Auslagern)和重新定位(Umlagern).大多数交易都有来源和目的地以及物料的数量和类型.

编辑:澄清:Restbestand是ZielTyp ='Lagerplatz'以及QuellTyp ='Lagerplatz'ak仓库的剩余库存.它是计算股票+交易.每年从仓库交易Buchungsart ='Bestandserfassung'开始,以设置库存中三种不同材料(标准,rutschhemmend,dick)的起始数量(Bestand).也许某些材料会丢失,然后可以纠正这些数量.因此,第7行使用Buchungsart ='Bestandskorrektur'(500x标准+ -10x标准= 490x标准).这两种交易类型"Bestandserfassung/Bestandskorrektur"没有来源,因为它只影响目的地仓库.也许某个仓库的库存太少,然后可以将物料从源仓库发送到此目标仓库.这是Buchungsart ='Umbuchung'.添加三个交易可以获得库存数量(Bestand).在这种情况下,目的地仓库始终是ZielBez.一年中,材料离开仓库,稍后返回.这是Buchungsart =,Auslagern'或者Einlagern'.如果物料离开数量是负的并且仓库是源(QuellBez),如果它返回它是正的并且仓库是目的地.

我尝试了几个SUM OVER语句,但我无法实现目标.

我们来看看我得到了什么:

 CREATE TABLE [dbo].[TestDaten]
 (
    [BuchID] [int] NOT NULL,
    [BuchPosID] [int] NOT NULL,
    [BuchungsArtID] [int] NULL,
    [ArtikelID] [int] NOT NULL,
    [Position] [int] NOT NULL,
    [BuchungsNr] [int] NOT NULL,
    [BuchungsDatum] [datetime2](0) NULL,
    [BuchungsArt] [nvarchar](255) NULL,
    [QuellTyp] [nvarchar](255) NULL,
    [ZielTyp] [nvarchar](255) NULL,
    [QuellBez] [nvarchar](255) NULL,
    [ZielBez] [nvarchar](255) NULL,
    [Bezeichnung] [nvarchar](255) NULL,
    [Menge] [int] NOT NULL
) ON [PRIMARY]
GO

INSERT [dbo].[TestDaten] ([BuchID], [BuchPosID], [BuchungsArtID], …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server running-total running-balance

6
推荐指数
1
解决办法
384
查看次数