分组难题,根据 item num 分组

liujoseph 2009-12-18 11:03:41
假如3万个 item ,item num 由英文和数字组成,长度有 6、12、13 位,想根据 item num 来对这些 item 进行分组,
每组最好是 1000 到 2000 个,但不能多于 2000 个。
我现在想到是截取字符串来分组,如果用 left(itemnum,2),可能会有 itemnum 是 ca 开头的有 5000 个,
bl 开头的有 1 个这种情况出现。
有什么办法能够让每一组的数量比較平均,只能用 item num 来判断。
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-12-18
  • 打赏
  • 举报
回复
上面2005写错了.

--2005用row_number
select * from
(
select * , px = row_number() over(order by [item num] , item) from tb t
) t
where (px - 1)/2000
dawugui 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]
你这个需求本来就自己矛盾吧,前缀和每组数量根本就没什么关联,怎么能通过前缀控制?就算现在差不多了怎么保证以后数据变动了也是这样?
[/Quote]
同意.
要不就自己生成序号.然后按照除2000来定.

--2000
select * from
(
select * , px = (select count(1) from tb where [item num] < t.[item num] or ([item num] = t.[item num] and item < item)) + 1 from tb t
) t
where (px - 1)/2000

--2005用row_number
select * from
(
select * , px = row_number() from tb t
) t
where (px - 1)/2000
guguda2008 2009-12-18
  • 打赏
  • 举报
回复
你这个需求本来就自己矛盾吧,前缀和每组数量根本就没什么关联,怎么能通过前缀控制?就算现在差不多了怎么保证以后数据变动了也是这样?
liujoseph 2009-12-18
  • 打赏
  • 举报
回复
其实需求是想根据 itemnum 来存放这些item 的图片,每一组的 item 的图片就放在同一个文件夹下,
所以不能用排序。

原始数据:
CBLA8100TRB6
TOTHMNIDB9MF
CNOKN96XSC01
DOTHXXXXKB05
CHTC3450SP01
4038234011703
CSAMA887SP01
CBLA8900TC01
POTHMHDMIAD1
DCREAZENDAT3
685387080984
689076292979
722868667798
CLGE8610COC3
PCAB13949X42
875912006323
CMOTV3XDAT01
CSAMM800SP02
228477
IHPXC6658AN1
DCPQ6515LI01
842616007949
.........

用 left(itemnum,2)分的话就会有下面情况
BI 1
69 1
CQ 1
BM 1
45 1
TE 1
70 1
CA 146
PC 156
CH 159
CM 172
DA 179
PO 223
25 252
CS 282
CB 301

想分配的平均一点,不知道能不能实现。
--小F-- 2009-12-18
  • 打赏
  • 举报
回复
类似分页一样的
把ITEM NUM进行分组排序 然后再按照序号来进行分组
2005的排序函数很好用的
guguda2008 2009-12-18
  • 打赏
  • 举报
回复
根据ITEM NUM进行排序,再根据序号分组
dawugui 2009-12-18
  • 打赏
  • 举报
回复
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧