Постановка задачи

В фирме есть 80 филиалов в 80 городах по РФ с одинаковой по структуре базой данных. В базах данных филиалов порядка 150 таблиц с одинаковым названием, но с разным, своим наполнением, за исключением общих справочников. Все филиалы имеют индивидуальные 2-значные номера. Для каждого филиала выделен свой SQL Server 2008R2 Enterprise edition (x64). Базы данных в филиалах имеют одинаковое название. Филиалы различаются разными IP-адресами и доменными именами. Все сервера БД объединены в единую сеть и единый домен (Active Directory) предприятия. Данные в таблицах филиалов могут как добавляться, так и изменяться и удаляться, изменения могут происходить и за долгий срок от текущего момента времени.

Постановка задачи

Задачу необходимо решить на SQL Server 2014 Enterprise Edition (x64).
В фирме есть определенное количество складов (по факту - много). На каждом складе ежедневно производится по нескольку тысяч отгрузок и приемок продуктов. Есть таблица движений товаров на складе - приход/расход. Необходимо реализовать:

  1. Расчет баланса на выбранную дату и время (с точностью до часа) по всем/любому складам по каждому продукту.
  2. Для аналитики необходимо создать объект (функцию, таблицу, представление), с помощью которого за выбранный диапазон дат вывести по всем складам и продуктам данные исходной таблицы и дополнительную расчетную колонку — остаток на складе позиции.
  3. Указанные расчеты предполагаются выполняться по расписанию с разными диапазонами дат и должны работать в приемлемое время. Т.е. если необходимо вывести таблицу с остатками за последний час или день, то время выполнения должно быть максимально быстрым, равно как и если необходимо вывести за последние 3 года эти же данные, для последующей загрузки в аналитическую базу данных.