我有以下结果集。SQL dense_rank()按组和计数
Tmp_Table
Tag | Code | Rel
A ABC 1
A ABC 1
A ABC 1
A ABC 1
B XYZ 1
B XYZ 1
B XYZ 1
B XYZ 1
B XYZ 1
C QWE 1
C QWE 1
C QWE 1
D EFG 1
的要求是:
- 集团通过标签记录,并添加组ID为每个组。
- 每个组不应该超过4个记录/行
- 应该将分组数超过4的记录分成不同的组。
我试着用dense_rank()
来创建每个记录的简单增量。
SELECT DENSE_RANK() OVER(Order By Tag)groupID, * FROM Tmp_Table
这里是当前结果集。
groupID | Tag | Code | Rel
1 A ABC 1
1 A ABC 1
1 A ABC 1
1 A ABC 1
2 B XYZ 1
2 B XYZ 1
2 B XYZ 1
2 B XYZ 1
2 B XYZ 1
3 C QWE 1
3 C QWE 1
3 C QWE 1
4 D EFG 1
预期结果。
groupID | Tag | Code | Rel
1 A ABC 1
1 A ABC 1
1 A ABC 1
1 A ABC 1
2 B XYZ 1
2 B XYZ 1
2 B XYZ 1
2 B XYZ 1
3 B XYZ 1
4 C QWE 1
4 C QWE 1
4 C QWE 1
5 D EFG 1
我也用row_number() over (partition by Tag order by Tag)
只为每个标签的增量尝试。
groupID | Tag | Code | Rel
1 A ABC 1
2 A ABC 1
3 A ABC 1
4 A ABC 1
1 B XYZ 1
2 B XYZ 1
3 B XYZ 1
4 B XYZ 1
5 B XYZ 1
...
肯定缺少重要的东西。任何想法将非常感激!