Baza zawiera listę wieloletnich umów. Przyjęto, że ich utylizacja jest równomierna w całym okresie trwania tj. wartość umowy dzielimy przez czas trwania w miesiącach. Chciałbym poznać miesięczna wartość utylizacji umów dla klientów.
Tabela zawiera pola:
customer, date, duration_in_months, value.
Date oznacza datę rozpoczęcia kontraktu.
Formulą iif sprawdzam, czy w danym miesiącu umowa jest aktywna i przyjmuje wartość utylizacji, jako wartość umowy podzielona przez czas trwania w miesiącach.
Moje 'meta' zapytanie wyglądałoby mniej więcej tak:
Select customer, sum(iif(date <= 01.01.2015 and dateadd(month,duration_in_months,date) >eomonth(01.01.2015) , value/duratnion_in_months,0) as sty), . (i tak dla każdego miesiąca) . sum(iif(date <= 01.12.2015 and dateadd(month,duration_in_months,date) >=eomonth(01.12.2015) , value/duratnion_in_months,0) as gru), from moja_baza_danych group by customer
Czy takie zapytanie można uprościć, aby uzyskać miesiące w kolumnach, stosując (w Accesie) składnie Transform/Pivot albo (w MS SQL) Pivot?
Z góry dziękuję za podpowiedzi.
Edit.
Łączna wartość miesięczna (utylizacji) umów w roku x np. 2015.
Klient, Sty, Lu, Ma, Kwie, Maj, Cze, Li, Sie, Wrze, etc.
Klient A 21 tys 7 tys etc...
Klient B 32 tys 32 tys etc...
Klient C 18 tys 23 tys etc...