SQL Server: LAG () OVER (ORDER BY Y) применить тот же результат для дублированного значения Y - PullRequest
1 голос
/ 12 апреля 2019

Когда я использую

LAG(Static_Col_2, 1) OVER (ORDER BY Static_Col_1) AS LAGged_Col

Я получаю эти результаты:

Static_Col_1   Static_Col_2   LAGged_Col
----------------------------------------
      1           456           NULL 
      2           457           456  
      3           458           457 
      4           459           458 
      5           460           459 
      5           461           460 
      5           462           461

Но я хочу:

Static_Col_1   Static_Col_2   LAGged_Col
----------------------------------------
      1           456           NULL 
      2           457           456  
      3           458           457 
      4           459           458 
      5           460           459 
      5           461           459 
      5           462           459

Когда «5» повторяется, LAG должен указывать на «4» каждый раз.

1 Ответ

2 голосов
/ 12 апреля 2019

Я не думаю, что вы можете сделать это в SQL Server с помощью простой оконной функции. Вы можете вкладывать оконные функции или использовать group by / join:

select t.*, tt.prev_col2
from t join
     (select col1, lag(max(col2)) over (order by col1) as prev_col2
      from t
      group by col1
     ) tt
     on t.col1 = tt.col1
order by 1;

Здесь - это дБ <> скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...