stinger1988 |
Таблица1: Номер квартиры, площадь Таблица2: Дата, тариф
Нужно сделать запрос который будет выводить по месяцам сколько должна платить каждая квартира. |
Если предполагается посчитать ежемесячную оплату за некий Год, причем тарифы (оплата за 1 кв.м) не зависят от квартир, то создайте таблицу Mes с полем m, в котором содержатся номера месяцев от 1 до 12, и воспользуйтесь запросом
SELECT T1.[Номер квартиры], T1.[площадь], Q2.m As Месяц,
T1.[площадь]*Sum(Q1.тариф*((Q1.et-Q1.bt+Q2.em-Q2.bm-Abs(Q1.bt-Q2.bm)-Abs(Q1.et-Q2.em))/2+1)/Q2.dm) AS Оплата
FROM Таблица1 As T1,
(SELECT T1.Дата AS bt, CDate(Nz(Min(T2.Дата),DateSerial(Год+1,1,1))-1) AS et, T1.тариф
FROM Таблица2 AS T1 LEFT JOIN Таблица2 AS T2 ON T1.Дата<T2.Дата
GROUP BY T1.Дата, T1.тариф) As Q1,
(SELECT m, DateSerial(Год,Mes.m,1) AS bm, DateSerial(Год,Mes.m+1,0) AS em, em-bm+1 AS dm
FROM Mes) As Q2
WHERE Q1.bt<=Q2.em And Q2.bm<=Q1.et
GROUP BY Q2.m,T1.[Номер квартиры], T1.[площадь]
где Год - параметр запроса.