Добавление столбца на основе разбиения по - Oracle - PullRequest
0 голосов
/ 01 августа 2020

Таблица:

Col1       Col2         Col3
43         1234         abc
42         1234         abc
41         1234         abc
35         1234         abc
34         5678         def

Цель состоит в том, чтобы создать новый столбец Col4 как 1 или 0 на основе следующего:

В каждом разделе с помощью Col2 and Col3, либо

  1. , если Col1-1 не существует (или)
  2. , если Col1-1 (и) Col1-2 оба значения существуют в таблице, тогда Col4 равно 1, иначе 0.

Таблица вывода:

 Col1            Col2         Col3        Col4
 43              1234         abc         1
 42              1234         abc         0
 41              1234         abc         1
 35              1234         abc         1
 34              5678         def         1

1 Ответ

1 голос
/ 01 августа 2020

Если я следую logi c, который вы описываете:

select t.*,
       (case when lag(col1) over (partition by col2, col3 order by col1) <> col1 - 1
             then 1
             when lag(col1) over (partition by col2, col3 order by col1) is null
             then 1
             when lag(col1, 2) over (partition by col2, col3 order by col1) = col1 - 2
             then 1
             else 0
        end) as col4
from t;

Здесь - скрипка db <>.

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