我有以下示例数据:
Id Name Quantity 1 Red 1 2 Red 3 3 Blue 1 4 Red 1 5 Yellow 3
因此,在此示例中,共有5个红色,1个蓝色和3个黄色。我正在寻找一种按颜色对它们进行分组的方法,但每组最多2个项目(排序并不重要)。像这样:
Name QuantityInPackage Red 2 Red 2 Red 1 Blue 1 Yellow 2 Yellow 1
关于如何在MS-SQL 2005上使用T-SQL完成此操作的任何建议?
我会定义一个表包含序列号,说1要1000和加入该表(除非你的数据库支持生成甲骨文使用类似查询这些号码CONNECT BY):
1
1000
CONNECT BY
表号
n 1 2 3 ...
我使用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
它返回
Blue 1 Red 2 Red 2 Red 1 Yellow 2 Yellow 1