Как ссылаться на другие столбцы, используя условие при создании вычисляемого столбца? - PullRequest
0 голосов
/ 05 февраля 2020

Предположим, у меня есть таблица SQL, как показано ниже, где минимальные расходы - это минимальные расходы для каждого года, и это вычисляемый столбец, созданный с использованием SQL -Window Function

|------------|-------|--------|----------|
|   Year     |Month  |  Spend |Min Spend |
|------------|-------|--------|----------|
|    2018    |   Jan |  10    |   10     |
|    2018    |   Feb |  20    |   10     |
|    2018    |   Oct |  25    |   10     |
|    2019    |   Jan |  90    |   45     |
|    2019    |   Aug |  60    |   45     |
|    2019    |   Nov |  45    |   45     |
|------------|-------|--------|----------|

. Я бы хотел создайте новый столбец в качестве вычисляемого поля в таблице, в котором будет указан месяц, соответствующий минимальным затратам на этот год, как показано ниже

|------------|-------|--------|----------|---------------|
|   Year     |Month  |  Spend |Min Spend |Min Spend Month|
|------------|-------|--------|----------|---------------|
|    2018    |   Jan |  10    |   10     |   Jan         |
|    2018    |   Feb |  20    |   10     |   Jan         |
|    2018    |   Oct |  25    |   10     |   Jan         |
|    2019    |   Jan |  90    |   45     |   Nov         |
|    2019    |   Aug |  60    |   45     |   Nov         |
|    2019    |   Nov |  45    |   45     |   Nov         |
|------------|-------|--------|----------|---------------|

Кто-нибудь может подсказать, как к этому подойти?

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете использовать функции окна следующим образом:

select t.*,
       min(spend) over (partition by year) as min_spend,
       first_value(month) over (partition by year order by spend) as min_spend_month
from t;
...