Отказ от ответственности: я использую Teradata и пытаюсь построить представление
У меня есть это представление, к которому я обращаюсь:
+----------+------+------------+---------------+---------+-------+
| scenario | week | sold_store | sold_customer | returns | price |
+----------+------+------------+---------------+---------+-------+
| past | 1 | 5000 | 2500 | 100 | 50 |
| future | 2 | 100 | 50 | null | 50 |
| future | 3 | 50 | 10 | null | 50 |
+----------+------+------------+---------------+---------+-------+
Мне нужно рассчитать будущие доходы, так как а также «открытие_сток», которое означает, сколько предметов у нас еще есть в наличии для продажи в магазинах.
Когда сценарий «прошлый», возвращается = возвращается (потому что у нас уже есть данные за прошлое)
Возвращает, когда сценарий является будущим = -0,05 * Открытие_сток (назовем его return_v2)
Открытие_сток = итоговая сумма = SUM (sold_store - sold_customer + возврат) более (ЗАКАЗАТЬ по неделе) (за исключением 3 значения должны быть равными единице недели-1)
Дело в том, что для возвратов говорят, что
Case Scenario
WHEN 'past' then returns
ELSE -0.05 * Opening_SIT
END as returns_v2
не работает, потому что Opening_SIT использовал оригинальный столбец «возвратов» (через LAG (), который я сохранил как столбец в подзапросе, например) вместо того, который я только что рассчитал с помощью моего оператора CASE.
Моя конечная цель будет получить:
+----------+------+------------+---------------+---------+-------+---------------+
| scenario | week | sold_store | sold_customer | returns | price | Opening_stock |
+----------+------+------------+---------------+---------+-------+---------------+
| past | 1 | 5000 | 2500 | -100 | 50 | null |
| future | 2 | 200 | 50 | -120 | 50 | 2400 |
| future | 3 | 50 | 10 | -121.5 | 50 | 2430 |
+----------+------+------------+---------------+---------+-------+---------------+
Основная проблема заключается в том, что Opening_Stock использует r возвраты недели-1, которые он должен сделать в течение первой будущей недели, но затем мне нужно взять return_v2 недели-1. Кроме того, return_v2 должен иметь возможность использовать Opening_Stock.
Я не знаю, как написать свой запрос, чтобы иметь возможность делать это, независимо от того, сколько подзапросов я использую ... Это похоже на бесконечность Я oop, из которого я не могу выйти.