Определение тарифа

stinger1988
Дата: 06.12.2009 18:41:39
Таблица1: Номер квартиры, площадь
Таблица2: Дата, тариф

Нужно сделать запрос который будет выводить по месяцам сколько должна платить каждая квартира. Есть один нюанс: тариф меняется нерегулярно, так что если просто связать таблицы это будет не то.
Видел такое в 1с.
qwerty112
Дата: 06.12.2009 19:32:46
stinger1988

Таблица1: Номер квартиры, площадь
Таблица2: Дата, тариф

Есть один нюанс: тариф меняется нерегулярно, так что если просто связать таблицы это будет не то.
Видел такое в 1с.


...долго думал...
вот если бы те кто меняют тарифы, - вняли бы мольбам, и стали их менять "регулярно",
по каким полям надо связать эти таблицы, что б было не "не то"..?
площадь - Дата? - как-то примитивно, без фантазии..
Номер квартиры - тариф - то же как-то "не то"...

>Видел такое в 1с.
да, это они умеют, ...в смысле показать
-=-
Дата: 06.12.2009 21:20:59
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.[площадь]
где Год - параметр запроса.
Beliar
Дата: 07.12.2009 09:32:15
Поржав с полчасика под столом, все хочется помочь.

stinger1988,
объясните четко отчего зависит тариф? за что собственно платят квартиры?