#sql-server #tsql
#sql-server #tsql
Вопрос:
У меня есть две таблицы:
- таблица мультипликативных сезонных факторов для каждого месяца
- таблица сумм годового бюджета
Я хотел бы, чтобы решение 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 . , , это отвечает на вопрос, который вы задали здесь. Лучшее, что можно сделать, это (повторно) принять этот ответ, а затем задать новый вопрос.