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

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

Select 
Name,
Height,
case when Height is not null then max(Height) over(partition by Name) end as NewHeight
from MyTable

Это мой вывод:

Name    Height  NewHeight
Johny       
Johny   5.6      5.6
Johny       
Mike        
Mike        
Mike    6.1      6.1

Это желаемый вывод:

Name    Height  NewHeight
Johny            5.6
Johny   5.6      5.6
Johny            5.6
Mike             6.1
Mike             6.1
Mike    6.1      6.1

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Использование coalesce():

Select  Name, Height,
        coalesce(Height, max(Height) over(partition by Name)) as NewHeight
from MyTable
0 голосов
/ 10 мая 2018

Вы используете is not null, когда вы должны использовать is null.Но, coalesce() является более кратким:

Select Name, Height,
       coalesce(Height, max(Height) over (partition by Name) end as NewHeight
from MyTable;

Или, если вам нужно одинаковое значение в каждой строке, вам даже не нужна условная логика:

Select Name, Height,
       max(Height) over (partition by Name) as NewHeight
from MyTable;
...