如何解决SQL按行计数的模数分组
我会定义一个表包含序列号,说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
解决方法
我有以下示例数据:
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完成此操作的任何建议?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。