Ich habe die folgende Tabelle, die Daten für Kaufmenge, Preis usw. enthält. Ich muss den laufenden Durchschnitt (aktueller Durchschnitt) für jede Zeile berechnen.SQL Berechnen Laufender Durchschnitt
Der erste currentAverage-Wert für Empfang 1 beträgt £ 75, da 500 Einheiten zu £ 75 gekauft wurden. es gab keine früheren Einheiten, so dass die erste mit (PurchaseQty * IntakeSellingPrice)/IntakeSellingPrice = CurrentAvg
I wurden durch "£ 79,4858" mit dem folgenden Verfahren manuell berechnete Quittung berechnet wird 2 bis:
* select *, ((PurchaseQty * IntakeSellingPrice) + (InventoryBalance *))/New Balance [CurrentAVG] *
CREATE TABLE [dbo].[X](
[Item No_] [nvarchar](20) NOT NULL,
[ReceiptNo] [bigint] NULL,
[Sold] [decimal](38, 20) NULL,
[InventoryBalance] [decimal](38, 20) NOT NULL,
[PurchaseQty] [decimal](38, 20) NULL,
[IntakeSellingPrice] [decimal](38, 20) NULL,
[NewBalance] [decimal](38, 20) NULL,
[CurrentAverage] [numeric](2, 2) NOT NULL
) ON [PRIMARY]
GO
INSERT [dbo].[X] ([Item No_], [ReceiptNo], [Sold], [InventoryBalance], [PurchaseQty], [IntakeSellingPrice], [NewBalance], [CurrentAverage]) VALUES (N'2000045', 1, CAST(0.00000000000000000000 AS Decimal(38, 20)), CAST(0.00000000000000000000 AS Decimal(38, 20)), CAST(500.00000000000000000000 AS Decimal(38, 20)), CAST(75.00000000000000000000 AS Decimal(38, 20)), CAST(500.00000000000000000000 AS Decimal(38, 20)), CAST(0.00 AS Numeric(2, 2))) GO
INSERT [dbo].[X] ([Item No_], [ReceiptNo], [Sold], [InventoryBalance], [PurchaseQty], [IntakeSellingPrice], [NewBalance], [CurrentAverage]) VALUES (N'2000045', 2, CAST(250.00000000000000000000 AS Decimal(38, 20)), CAST(250.00000000000000000000 AS Decimal(38, 20)), CAST(2181.00000000000000000000 AS Decimal(38, 20)), CAST(80.00000000000000000000 AS Decimal(38, 20)), CAST(2431.00000000000000000000 AS Decimal(38, 20)), CAST(0.00 AS Numeric(2, 2))) GO
INSERT [dbo].[X] ([Item No_], [ReceiptNo], [Sold], [InventoryBalance], [PurchaseQty], [IntakeSellingPrice], [NewBalance], [CurrentAverage]) VALUES (N'2000045', 3, CAST(316.00000000000000000000 AS Decimal(38, 20)), CAST(2115.00000000000000000000 AS Decimal(38, 20)), CAST(10.00000000000000000000 AS Decimal(38, 20)), CAST(80.00000000000000000000 AS Decimal(38, 20)), CAST(2125.00000000000000000000 AS Decimal(38, 20)), CAST(0.00 AS Numeric(2, 2)))
Die Antwort hängt von Ihrer Datenbank-Engine ab, die Sie nicht angegeben haben. –
Welches DBMS ist das ???? Bitte markieren Sie richtig, wenn Sie Hilfe benötigen. – Eric
Dies ist für tsql 2012 sql server – user3266033