SQL复杂打撒排序问题(平均分配会员信息条数排序)

zy13665886 2012-08-22 09:39:38
会员ID 信息 日期
A 1 21
A 1 21
A 1 21
A 1 21
A 1 21
B 2 20
B 2 20
B 2 20
B 2 20
C 3 19
C 3 19
C 3 19
C 3 18
D 4 18
D 4 17
D 4 17

现象:如果我一页分4条显示,按照日期的倒序,那么一页全部显示的都是A会员的信息

要求实现:
A,B,C,D会员在每个分页里面平均信息,也就是第一页,第二页...,要有A,B,C,D 4家会员的信息,再按日期
简单说,就是不让一家会员全部显示在上面

请高手指教,我现在用的是
Order By Rnd(),日期 desc
但是还是无法满足我 会员都能显示
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
以学习为目的 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 1 楼 的回复:
使用ROW_NUMBER()OVER(partition by 会员ID Order By Rnd(),日期 desc)


非常谢谢,好像已经解决了,最后
少了个 order by rank
[/Quote]
不客气 解决问题了就行!
zy13665886 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你先看看row_number用法
[/Quote]

检查了下查询出来的数据,信息是散开了,但是通过查询一家会员,检查日期 又没有按照日期倒序排列了
zy13665886 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
使用ROW_NUMBER()OVER(partition by 会员ID Order By Rnd(),日期 desc)
[/Quote]

非常谢谢,好像已经解决了,最后
少了个 order by rank
zy13665886 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
使用ROW_NUMBER()OVER(partition by 会员ID Order By Rnd(),日期 desc)
[/Quote]

看了下语法,现在是显示正常了,但是效果没有实现,排序还是一家会员全部排在了一起,
请帮我看看

select s.acto_id,s.ohtml_name,s.acto_infornum,s.acto_area1 as area1,s.acto_area2 as area2,s.acto_type,o.*,u.users_comname,u.users_comshortname,sw.color sw_color,sw.ClassName as sw_classname,'㎡' as AreaUnits,Row_NUMBER() OVER (partition by s.Users_ID Order By s.ActO_Publish desc) as rank from [FC_Act_SellHouse] s inner join [FC_Office] o on o.id = s.office_id inner join [FC_Users] u on s.users_id = u.users_id and u.users_isdel=0 inner join [FC_DomainConfig] d on d.sub_city = o.Off_city left join [FC_Class] sw on s.ActO_Type=sw.C_ID where s.ActO_IsLock=1 and s.ActO_IsDel=0 and (s.acto_infornum>0) and s.ActO_IsCase=0 and s.ActO_ID not in (0) order by Case off_city When '杭州' Then 0 Else 1 End, u.users_isuser desc,s.ActO_Publish desc
以学习为目的 2012-08-22
  • 打赏
  • 举报
回复
你先看看row_number用法
zy13665886 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
使用ROW_NUMBER()OVER(partition by 会员ID Order By Rnd(),日期 desc)
[/Quote]
报错 :'Rnd' 不是可以识别的 内置函数名称。

然后调整为 :
where s.ActO_IsLock=1 and s.ActO_IsDel=0 and (s.acto_infornum>0) and s.ActO_IsCase=0 and s.ActO_ID not in (0) Row_NUMBER() OVER (partition by s.Users_ID order by Case off_city When '杭州' Then 0 Else 1 End, Rnd(),s.ActO_Publish desc)

又报错:'Row_NUMBER' 附近有语法错误
zy13665886 2012-08-22
  • 打赏
  • 举报
回复
SQL 2005
孤独加百列 2012-08-22
  • 打赏
  • 举报
回复
数据库版本?
以学习为目的 2012-08-22
  • 打赏
  • 举报
回复
使用ROW_NUMBER()OVER(partition by 会员ID Order By Rnd(),日期 desc)

22,207

社区成员

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

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