Сложный запрос - создание списка в диапазоне дат. (сложное управление окнами, рекурсивные запросы) - PullRequest
1 голос
/ 01 мая 2011

Таблица:

Я использую MYSQL.

 tax_year_end_changes | CREATE TABLE `tax_year_end_changes` (  
  `id` int(11) NOT NULL auto_increment,
   `company_id` int(11) NOT NULL,
    `date` date NOT NULL default '1970-01-01',
    `reason` enum('Fiscal_Year_End','Control_Change') collate utf8_unicode_ci NOT
     NULL default 'Fiscal_Year_End',
     `created_at` datetime default NULL,
     `updated_at` datetime default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `company_id` (`company_id`,`date`,`reason`)
   ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

В этой таблице содержится список конца финансового года для компании.Когда конец финансового года компании изменяется, у таблицы только есть новый конец финансового года.Конец финансового года по умолчанию сохраняется с 1970 года. Изменения сохраняются с даты изменения.Пример данных:

выберите company_id, дату, причину из tax_year_end_changes;

1 1970-12-31 Fiscal_Year_End
1 2011-01-31 Fiscal_Year_End
3 1970-01-31 Fiscal_Year_End
4 1970-11-30 Fiscal_Year_End

Здесь компания 1 имеет конец финансового года с 31 декабря по 2010 год. В 2011 году FYE изменяется на 31 января.Таким образом, для этой компании действительными FYE являются:

31 декабря 2010 г. 31 января 2011 г. 31 января 2012 г.,.

Я хочу создать список действительных FYE с заданным диапазоном дат.В частности,

У меня есть дата начала и количество месяцев.

Я хочу создать что-то вроде:

Вариант использования 1

Start Date: 2010-11-01
Number of Months: 3

company_id, month, tax_year_end_date

4 11 2010-11-30
1 12 2010-12-31
3 01 2011-01-31
1 01 2011-01-31

Вариант использования 2

Start Date: 2011-11-01
Number of Months: 3

company_id, month, tax_year_end_date

4 11 2011-11-30
3 01 2011-01-31
1 01 2011-01-31

Примечания. Обратите внимание, что в случае использования 2 2011-12-31 не отображается для компании 1 какэтот год больше не действителен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...