Максимальное значение от всех значений в столбце до нового столбца - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно добавить новый столбец в операторе выбора, который содержит максимальный год (хранится в виде текста) из всех записей, а затем пометить его как CY / PY.В таблице всегда указаны только два года.

 year    value   
 2019    value1  
 2019    value2  
 2018    value3  

Пока я пробовал это, но мне возвращается только максимум из этой строки, а не весь столбец.

 select year, value, IIF(year=MAX(year), 'CY', 'PY') AS "CY/PY" from table

Ожидается:

year    value     CY/PY
2019    value1    CY
2019    value2    CY
2018    value3    PY

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Я думаю, что вы хотите функцию окна:

select year, value,
       (case when year = MAX(year) over () then 'CY' else 'PY' end) AS "CY/PY"
from table
0 голосов
/ 07 февраля 2019

Попробуйте использовать подзапрос в вашем IIF:

select year, value, IIF(year=(select MAX(year) from table), 'CY', 'PY') AS "CY/PY" from table
0 голосов
/ 07 февраля 2019

Попробуйте использовать MAX в качестве аналитической функции:

WITH cte AS (
    SELECT year, value, MAX(year) OVER () AS max_year
    FROM yourTable
)

SELECT
    year,
    value,
    IIF(year = max_year, 'CY', 'PY') AS "CY/PY"
FROM cte;
...