Создание ежемесячных данных на основе сезонных факторов и годовых данных

#sql-server #tsql

#sql-server #tsql

Вопрос:

У меня есть две таблицы:

  1. таблица мультипликативных сезонных факторов для каждого месяца
  2. таблица сумм годового бюджета

Я хотел бы, чтобы решение T-SQL создало третью таблицу, которая преобразует (умножает) суммы годового бюджета в ежемесячные временные ряды.

Пример таблицы 1 (сезонные факторы):

Месяц Сезонный фактор
1 .08
2 .075
3 .065
4 .085
5 .09
6 .08
7 .08
8 .075
9 .065
10 .085
11 .09
12 .13

Пример таблицы 2 (суммы годового бюджета)

Год Бюджет
2019 250,000
2020 275,000

Желаемое решение

Месяц Условный бюджет
2019-01-01 .08 * 250,000
2019-02-01 .075 * 250,000
2020-12-01 .13 * 275,000

Ответ №1:

Кажется, вы описываете cross join :

 select datefromparts(t2.year, t1.month, 1) as month,
       t1.factor * t2.budget
from table1 t1 cross join
     table2 t2
order by month;
 

Комментарии:

1. @JoelSherman . , , Есть причина, по которой вы не приняли этот ответ?

2. Извините. Я забыл описать, что [Год] в t2 выше — это финансовый год, начинающийся в июле и заканчивающийся в июне. Перекрестное объединение идеально подходит для распределения годовой суммы по календарным месяцам, но не будет работать с финансовыми годами.

3. @JoelSherman . , , это отвечает на вопрос, который вы задали здесь. Лучшее, что можно сделать, это (повторно) принять этот ответ, а затем задать новый вопрос.