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实现此目的的任何建议?
我会定义一个表包含序列号,说1要1000和加入该表(除非你的数据库支持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)
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |