Может ли кто-нибудь помочь вычислить вывод этой записи с помощью 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
вариант использования, когда
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
Если у вас есть rownum, просто используйте арифметику:
rownum
select t.*, 1 + ((rownum - 1) / 4) as grp from t;
Если нет, вы можете использовать row_number():
row_number()
select t.*, 1 + ((row_number() over (order by rownum) - 1) / 4) as grp from t;