SQL Group By Modulo的行计数

Ale*_*rto 4 sql t-sql group-by

我有以下示例数据:

Id     Name     Quantity
1      Red      1
2      Red      3
3      Blue     1
4      Red      1
5      Yellow   3
Run Code Online (Sandbox Code Playgroud)

因此,对于此示例,总共有5个红色,1个蓝色和3个黄色.我正在寻找一种通过Color对它们进行分组的方法,但每组最多2个项目(排序并不重要).像这样:

Name     QuantityInPackage
Red      2
Red      2
Red      1
Blue     1
Yellow   2
Yellow   1
Run Code Online (Sandbox Code Playgroud)

有关如何在MS-SQL 2005上使用T-SQL实现此目的的任何建议?

Pet*_*ang 6

我会定义一个表包含序列号,说11000和加入该表(除非你的数据库支持Oracle中使用类似的查询生成这些号码CONNECT BY):

表号

n
1
2
3
...
Run Code Online (Sandbox Code Playgroud)

我使用Oracle尝试了以下查询(也应该使用TSQL):

With summed_colors As (
  Select name, Sum(quantity) quantity
  From colors
  Group By name
)
Select
  name,
  Case When n*2-1 = quantity Then 1 Else 2 End quantityInPackage
From summed_colors
Join nums On ( n*2-1 <= quantity )
Order By name, quantityInPackage Desc
Run Code Online (Sandbox Code Playgroud)

然后它回来了

Blue   1
Red    2
Red    2
Red    1
Yellow 2
Yellow 1
Run Code Online (Sandbox Code Playgroud)