【问题标题】:How to group record equally using SQL 2005如何使用 SQL 2005 对记录进行平均分组
【发布时间】:2019-07-19 23:24:53
【问题描述】:

可以帮助使用 SQL 计算此记录的输出。我想根据第 N 条记录对记录进行平均分组。在下面的示例中,所有内容均被 4 整除。

实际记录

SO #    RowNum
001      1
002      2
003      3
004      4
005      5
006      6
007      7
008      8
009      9
010     10
011     11
012     12
013     13

期望的输出

SO #    RowNum    Group
001      1          1
002      2          1
003      3          1
004      4          1
005      5          2
006      6          2
007      7          2
008      8          2
009      9          3
010     10          3
011     11          3
012     12          3
013     13          4

【问题讨论】:

    标签: sql sql-server-2005


    【解决方案1】:

    如果你有rownum,只需使用算术:

    select t.*, 1 + ((rownum - 1) / 4) as grp
    from t;
    

    如果没有,你可以使用row_number():

    select t.*, 1 + ((row_number() over (order by rownum) - 1) / 4) as grp
    from t;
    

    【讨论】:

      【解决方案2】:

      用例当

      select a.*,case when RowNum<=4 then 1
                    when RowNum<=8 then 2
                     when RowNum<=12 then 3
                     else 4 end as grp from table_name a
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多