Sie müssen viel detaillierter angeben, wie Ihr 36-Stunden-Fenster funktioniert; ist es nur irgendein beliebiges 26-Stunden-Fenster oder sind es Intervalle mit definierten Start- und Endpunkten? Wenn es Letzteres ist, können Sie dies nur mit einer zusätzlichen Datetime Periods-Tabelle tun, für die Sie die Summen berechnen können.
Für den ehemaligen können Sie jedoch die 36-Stunden-Periode vor und nach jedem Verkauf betrachten und dann die maximale dieser Werte finden. Der einfachste Weg dazu ist ein Table
in Excel und die folgenden SUMIFS
Formeln, die für alle Verkäufe des gleichen Typs wie in der Zeile suchen, die einen Datetime-Wert 36 Stunden (1,5 Tage) vor oder nach dem Datetime-Wert in haben die gegebene Reihe:
starten, indem Sie Daten auswählen und einfügen dann eine Tabelle:

dann zwei Spalten hinzufügen und die folgenden Formeln eingeben:
Prev 36 Stunden:
= SUMIFS ([Verkauf], [Typ], [@ Typ], [Datetime] ">" & [@Datetime] -1,5 [Datetime] "< =" & [@Datetime])
Nächste 36 Stunden:
= SUMIFS ([Verkauf], [Typ], [@ Typ], [Datetime] "< "& [@Datetime] +1,5 [Datetime],"> =" & [ @Datetime])

diese 36 Stunden Perioden vom Datetim Verwendung in SQL Dazu Als Wert können Sie Folgendes verwenden. Ich habe sowohl die vorherigen als auch die folgenden 36-Stunden-Zeiträume einbezogen, da durch den Blick in nur eine Richtung der Verkauf entweder am Anfang oder am Ende des Datensatzes ausfällt.Windowed Funktionen lassen Sie nicht datengesteuerten Fenster angeben, damit Sie verwenden müssen entweder beitritt oder Unter wählt zu erreichen, was Sie nach:
declare @data table(dt Datetime, Type nvarchar(50), Sale int)
insert into @data
values
('2016/07/25 03:21','A',12)
,('2016/07/25 04:00','B',23)
,('2016/07/25 15:20','B',5)
,('2016/07/26 05:15','A',15)
,('2016/07/26 10:20','A',3)
,('2016/07/26 16:10','B',20)
,('2016/07/27 10:10','B',5)
select a.dt
,a.Type
,a.Sale
,sum(dprev.Sale) as PrevSales
,a.NextSales
from(
-- If you only want the proceeding 36 hour period you can just use this part --
select d.dt
,d.Type
,d.Sale
,sum(dnext.Sale) as NextSales
from @data d
left join @data dnext
on(d.Type = dnext.Type
and dnext.dt between d.dt and dateadd(hour,+36,d.dt)
)
group by d.dt
,d.Type
,d.Sale
-------------------------------------------------------------------------------
) a
left join @data dprev
on(a.Type = dprev.Type
and dprev.dt between dateadd(hour,-36,a.dt) and a.dt
)
group by a.dt
,a.Type
,a.Sale
,a.NextSales
order by a.Type
,a.dt
Können Sie bitte die erwartete Ausgabe einfügen ..Für Excel läuft insgesamt, überprüfen Sie diese https://support.office.com/en-us/article/Calculate-a-running-total-170fa72a-a0f4-4476-9708 -5a9f993668e9 – TheGameiswar
Ich habe weder den ursprünglichen Eingang noch den Ausgang. Es war eine Testfrage. Was wäre Ihr Ansatz, unabhängig von der realen Eingabe? – Kenny