Sql server 每秒钟将一个组分隔为1或2个组
我有一个多个组件的列表,所有组件都有一个型号。我想根据它所属的模型对每一个组件进行分组Sql server 每秒钟将一个组分隔为1或2个组,sql-server,Sql Server,我有一个多个组件的列表,所有组件都有一个型号。我想根据它所属的模型对每一个组件进行分组 Model | Component | Group 1 1 1 1 2 2 1 3 1 1 4 2 1 5 1 2 1 1 2 2 2 2
Model | Component | Group
1 1 1
1 2 2
1 3 1
1 4 2
1 5 1
2 1 1
2 2 2
2 3 1
属于模型的第二个组件应具有备用组号
我相信我必须使用windows功能,但无法解决问题。我假设您的
型号
和组件
ID号不是完全递增的,而是唯一的。因此,您可以使用行数
窗口函数和模运算器%
将行数
结果的剩余部分除以2:
declare @t table (Model int, Component int);
insert into @t values (1,1),(1,2),(1,3),(1,4),(1,5),(2,1),(2,2),(2,2);
select Model
,Component
,case (row_number() over (partition by Model order by Component) % 2)
when 1 then 1
when 0 then 2
end as [Group]
from @t;
输出:
+-------+-----------+-------+
| Model | Component | Group |
+-------+-----------+-------+
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | 3 | 1 |
| 1 | 4 | 2 |
| 1 | 5 | 1 |
| 2 | 1 | 1 |
| 2 | 2 | 2 |
| 2 | 2 | 1 |
+-------+-----------+-------+
你的预期产出是多少