【问题标题】:ROW_NUMBER() OVER() partitioning at an odd placeROW_NUMBER() OVER() 在一个奇怪的地方分区
【发布时间】:2020-08-03 15:09:00
【问题描述】:

我有一张包含以下信息的表格:

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 由 Header 2 分区,但由奇数个 header 1 分区。如果这有意义吗?反斜杠表示我想要分区的位置,并且我希望能够选择标题 1 中我想要分区的数字。

我尝试使用 Lag,但无法使用。

我也试过这个:

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

希望您能理解,并希望有人能找到解决方案。

【问题讨论】:

    标签: sql sql-server window-functions


    【解决方案1】:

    我想你想要:

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

    这会将不均匀的header1s 放在首位,然后按降序排列header1

    Demo on DB Fiddle

    页眉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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2015-10-03
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2012-04-22
      相关资源
      最近更新 更多