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

0

Wszystko sie sprowadza do zakresu dat i nic nie trzeba updatować, tylko poprawnie wyliczyć datę od i datę do, załóżmy, że na dzień dzisiejszy 2019-09-03, chcesz pokazać dane z czterech tygodni, licząc ten w którym jesteśmy obecnie, czyli zakres od pierwszego dnia tygodnia: 2019-09-02 i pokazać 4 tygodnie czyli do 2019-09-29:

--ustaw sesje, aby pierwszym dniem tygodnia był poniedziałek
SET DATEFIRST 1;

--zadeklaruj zmienną @dt
declare @dt as date

--przypisz do zmiennej @dt pierwszy dzień tygodnia z bieżącej daty
set @dt = DATEADD(wk, 0, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) 

select
    source
    ,item
    ,sum(forecast)
   ,min(date)
    ,max(date)
from
    forecasttable
where
    --weź tylko daty z zakresu od poniedziałku do 4 tygodnie
    date between @dt and dateadd(d,27,@dt)
group by 
    source
    ,item

To samo bez deklarowania zmiennych

SET DATEFIRST 1;
select
    source
    ,item
    ,sum(forecast)
   ,min(date)
    ,max(date)
from
    forecasttable
where
    date between DATEADD(wk, 0, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE())))  and dateadd(d,27,DATEADD(wk, 0, DATEADD(DAY, 1-DATEPART(WEEKDAY, GETDATE()), DATEDIFF(dd, 0, GETDATE()))) )
group by 
    source
    ,item
0
insert into 
  forecasttable (source,item,date,forecast)
select
   source,item,dateadd(day,28,date),0
from
  forecasttable
where
   date between getdate() and dateadd(day,28,getdate())
;
0

Hej Dragon,

  1. select
    source,item,dateadd(day,28,date),0 --> czy mógłbyś mi powiedzieć co mam wpisać w day ? i w date obecną datę ? Dlaczego tam jest 0 ?

  2. where
    date between getdate() and dateadd(day,28,getdate()) --> czy w tych nawiasach po getdate mam co wpisać ? / co wpisać w day przed cyfrą 28 ?

0
aidfsn napisał(a):

Dlaczego tam jest 0 ?
A ty oczekiwałeś obliczenia następnego forecast'a nie podając nawet czego ma dotyczyć?

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