Я изучаю оконные функции и пытаюсь решить эту
Таблица:
colA colB colC colD
70 3021 1234 a
69 3021 1234 b
68 3021 1234 a
67 3021 5678 a
2 4153 9170 b
1 4153 9170 a
Требуемый вывод:
colA colB colC colD output
70 3021 1234 a 2
69 3021 1234 b (null)
68 3021 1234 a 1
67 3021 5678 a 1
2 4153 9170 b (null)
1 4153 9170 a 1
То, что я пробовал
select *,row_number() over (partition by colB,colC order by colA,colB)
from table;
Это обеспечит номер строки повсюду, но номер строки потребуется только для colD = a
Для группы colB и col C номер строки должен быть сгенерирован только там, где colD = ' a '.
Например, для группы colB и col C (3021 и 1234) выводом будет инкрементная строка с номерами 1 и 2, где colD=a
, иначе вывод будет null