我有以下示例数据:
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
to 1000
并加入该表(除非您的数据库支持在查询中生成这些数字,例如 Oracle 使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)