ROW_NUMBER () OVER () разбиение в нечетном месте - PullRequest
0 голосов
/ 03 августа 2020

У меня есть таблица со следующей информацией:

Header 1 | Header 2 | Desired Column
    1    |    1     |      2
    2    |    1     |      3
    3    |    1     |   /  1
    1    |    2     |      2
    2    |    2     |      3
    3    |    2     |   /  1
    1    |    3     |      2
    2    |    3     |      3
    3    |    3     |   /  1

Я пытаюсь использовать Row_Number() Over(Partition by), чтобы получить желаемый столбец, который вы видите. Мне нужно, чтобы Row_number был разделен заголовком 2, но нечетным числом заголовка 1. Если это имеет смысл? Обратные косые черты указывают, где я хочу разместить раздел, и я хочу иметь возможность выбрать номер в заголовке 1, по которому я хочу разделить.

Я пытался использовать Lag, но не могу заставить его работать .

Я тоже пробовал это:

ROW_NUMBER() OVER (PARTITION BY Header1 = 3, Header2) OVER (ORDER BY Header2, Header1)

Надеюсь, вы понимаете, и что кто-то сможет найти решение.

1 Ответ

2 голосов
/ 03 августа 2020

Я думаю, вы хотите:

row_number() over(partition by header2 order by header1 % 2 desc, header1 desc)

Сначала будут размещены неравные header1 s, а затем сортируются по убыванию header1.

Демо в БД Скрипка :

Header1 | Header2 | rn
------: | ------: | -:
      1 |       1 |  2
      2 |       1 |  3
      3 |       1 |  1
      1 |       2 |  2
      2 |       2 |  3
      3 |       2 |  1
      1 |       3 |  2
      2 |       3 |  3
      3 |       3 |  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...