我有一个如下所示的数据集:
我正在尝试按组号,子组号,产品和收货方地址对数据进行分区。每个分区不应有超过3行的记录。因此,即使满足以上所有条件,第4条记录仍将位于新分区中。
当前,我的SQL语句如下:
*********
但是我无法弄清楚如何对相同条件的每三行进行分区,以便可以像下面的图像一样显示数据:
任何建议将不胜感激!
答案 0 :(得分:0)
使用row_number()
和group by
:
Select Group#, Sub_Group#, Product, Ship_To,
MIN(Sub_Group_Index) as MIN_INDEX, MAX(Sub_Group_Index) AS MAX_INDEX
from (select st.*,
row_number() over (partition by Group#, Sub_Group#, Product, Ship_To order by uniqueid) as seqnum
from [sample_table] st
) st
group by Group#, Sub_Group#, Product, Ship_To, trunc((seqnum - 1) / 3);