Sql 在奇数位置进行的行数()OVER()分区
我有一张包含以下信息的表格:Sql 在奇数位置进行的行数()OVER()分区,sql,sql-server,window-functions,Sql,Sql Server,Window Functions,我有一张包含以下信息的表格: 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 |
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\u Number()来获得您可以看到的所需列。我需要将行_编号按头2进行分区,但按头1的奇数进行分区。这有意义吗?反斜线表示我希望分区的位置,并且我希望能够选择头1中我希望分区的数字
我试着使用滞后,但我不能让它工作
我也试过:
ROW_NUMBER() OVER (PARTITION BY Header1 = 3, Header2) OVER (ORDER BY Header2, Header1)
希望您能理解,并且有人能找到解决方案。我想您需要:
row_number() over(partition by header2 order by header1 % 2 desc, header1 desc)
这将首先放置标题1
s,然后按降序排序标题1
:
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
校长1 |校长2 | 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
我想你想要:
row_number() over(partition by header2 order by header1 % 2 desc, header1 desc)
这将首先放置标题1s,然后按降序排序标题1
:
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
校长1 |校长2 | 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