免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5685 | 回复: 8
打印 上一主题 下一主题

求一SQL语句(如何按某列的值分组且取出每组前几行的数据) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-24 19:16 |只看该作者 |倒序浏览
是Sybase ASE12.5 数据库
有如下表:
id   price    collectDate
1     20.3      20050608
1     20.8      20050609
1     21.7      20050610
2     33.1      20050608
2     32.8      20050622
2     33.7      20050713
3     120.4     20050706


请问:如何取得id相同的值的列的前两行数据?谢谢

论坛徽章:
0
2 [报告]
发表于 2005-09-24 23:26 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

select top2 * from table_name group by id order by price
top2和*哪个在前面我记不清了,你两个都试试

论坛徽章:
0
3 [报告]
发表于 2005-09-25 10:17 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

谢谢你的回答,不过现在的问题是id相同的取出两行,比如:id=1的取出两行,id=2也只取两行.我想过用子查询然后TOP,但是ASE里好像不支持子查询的TOP.(在SQL SERVER2000中我试过了,能用的)
SELECT a.id,a.price,a.collectDate
FROM tab_a a   
WHERE a.collectDate in
      (SELECT TOP 2 b.collectDate FROM  tab_a b
             WHERE b.id=a.id ORDER BY  b.collectDate)
后来我又用了max函数,在子查询中取出日期最大和第二大的,但是如果有相同的日期就会出现查了多于两条的情况.

论坛徽章:
0
4 [报告]
发表于 2005-09-25 10:54 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

用select distinct试试,可以避免出现重复行

论坛徽章:
0
5 [报告]
发表于 2005-09-25 12:41 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

ASE自12.5。3开始支持select top x

论坛徽章:
0
6 [报告]
发表于 2005-09-26 09:46 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

可是不支持在子查询中使用TOP啊.

论坛徽章:
0
7 [报告]
发表于 2005-09-26 12:47 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

[quote]原帖由 "yfmine"]可是不支持在子查询中使用TOP啊.[/quote 发表:


使用临时表

论坛徽章:
0
8 [报告]
发表于 2005-09-26 13:08 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

嗯,好的,我去试试.

论坛徽章:
0
9 [报告]
发表于 2005-09-27 18:17 |只看该作者

求一SQL语句(如何按某列的值分组且取出每组前几行的数据)

flybean,我的是12.5.1.也支持TOP呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP