SQL sumowanie forecastu z każdego dnia z przyszłości

0

Hej,

Zwracam się do was z pytaniem jakich funkcji najlepiej użyć aby uzyskać efekt opisany poniżej.
A więc moje query do tej pory to:

select source, item, forecast, date, forecast
from forecast table;

A więc forecast jest pokazany w przód na rok. Ja chciałbym żeby był pokazany tylko na 4 tygodnie w przód, nie mam pojęcia jakiej funkcji najlepiej użyć - jakaś podpowiedź ?
No i później jak już mam te 4 tygodnie jak to najlepiej zsumować ? - czyli że jeśli dany source produkuje dany item to chciałbym aby pokazało sumę forecastu na 4 tygodnie a nie dzień po dniu.

Z góry dziękuję za każda podpowiedź !

0

zakładając że 4 tygodnie to 28 dni:

select
    source
    ,item
    ,sum(forecast)
from
    forecasttable
where
    date between getdate() and dateadd(d,28,getdate())
group by 
    source
    ,item
0

Super !
Dzięki za pomoc.

Czy mógłbyś mi mniej więcej podpowiedzieć jak wypełnić tą formułę ?

  • between getdate() and dateadd(d,28,getdate()) ?

czy po pierwszym getdate (w nawiasie) powinienem dać początkową datę ? Czyli jeśli chcę liczyć od przyszłego tygodnia od poniedziałku to datę przyszłego poniedziałku ?
i po następnym get date datę końcową, tak ?

Używam Oracle SQL Developer więc mam nadzieję, że te komendy mi zadziałają bo czasami niektóre nie działają.

0

getdate() biezaca data
dateadd(d,28,getdate()) dodaje do biezacej daty 28 dni

na dzsiejszy dzień, taki zapis będzie równoważny:

where date between '2019-09-03' and '2019-10-01'
0

Super !
Działa dzięki,

A co jeśli chciałbym aby pokazywało mi jeszcze datę ?

To znaczy:
Agreguje dane z czterech tygodni - na przykład '2019-09-03' and '2019-10-01'

No i teraz w mojej końcowej tabelce mam tylko source, item i suma tego forecastu z określonego okresu no ale chciałbym żeby mi także pokazywało tylko jedną datę.
Na przykład aby pokazywało dodatkową kolumnę z datą 2019-09-03 i wiedziałbym że to jest agregacja z przyszłych 4 tygodni.

No bo teraz tak naprawdę mam możliwość:
Source, item, forecast i data na każdy dzień Albo source, item, suma forecastu bez daty.

Jakieś pomysły ? : )

0

No to dodaj GETDATE() w SELECT i GROUP BY

0

No to masz trzy mozliwości:

select
    source
    ,item
    ,sum(forecast)
    ,'2019-09-03'
   ,min(date)
    ,max(date)
from
    forecasttable
where
    date between getdate() and dateadd(d,28,getdate())
group by 
    source
    ,item
0

Super, dzięki za odpowiedź !
Działa, chociaż te MIN i MAX nie są mi chyba zbytnio potrzebne chyba że nie rozumiem ich zastosowania.
Te MIN i MAX pojawiają mi się jako dodatkowe kolumny, czy tak ma być ?

0

podalem 3 mozliwe przykłady, wpisana data na sztywno lub funkcje agregujące min/max.

Sam wybierasz co chcesz

0

A dałoby radę zrobić tak, że co tydzień to się updatuje na nowo kolejnymi 4 tygodniami ?

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot