一个表,有3列,a, b, c,其中a是主键
数据假设是:
a b c
a1 b1 c1
a2 b3 c1
a3 b1 c2
a4 b2 c2
a5 b2 c2
我以c找出前2笔数据,也就是我需要的结果只有:a b c
a1 b1 c1
a2 b3 c1
a3 b1 c2
a4 b2 c2只能用SQL语句来实现~
急盼!!!
数据假设是:
a b c
a1 b1 c1
a2 b3 c1
a3 b1 c2
a4 b2 c2
a5 b2 c2
我以c找出前2笔数据,也就是我需要的结果只有:a b c
a1 b1 c1
a2 b3 c1
a3 b1 c2
a4 b2 c2只能用SQL语句来实现~
急盼!!!
解决方案 »
- 数据库设计
- 一个简单的sql查询问题
- VB+oracle的日期 错误提示:列在此处不允许操作
- where '11,,,'|| a.acct = b.acctKey
- 不定行转列的问题,向各位大侠请救,不胜感激,在线等……
- 请问各位:字段属性由char(10)转为varchar2(10)如何将原来记录中的空格去掉?
- 怎样复制用户所有对象
- 再PL/SQL中,怎样获取指定日期加上定的天数后的新日期?
- 进oracle,提示"oracle 初始化or shutdown in progress"错误,请问是哪儿的原因?在线
- 求指导,查询优化方法
- 请教:一条记录里有F1,F2,F3三个属性相同的字段,拆分为3条记录!(在线等待,解决马上送分!)
- 高手指点!!在8i怎么用pl/sql读写文件?先谢了~~~
where row_number()over(partition by c ) <3
但你可能没理解我的意思,比如c1有3笔, c2有5笔,c3有10笔,我只希望得到6笔数据,那就是
c1的前两笔 + c2前两笔 + c3前两笔
select c
,row_number()over(partition by c order by A) ss from (select 'a1' A, 'b1' B,'c1' C from dual union
select 'a2' A, 'b1' B,'c1' C from dual union
select 'a3' A, 'b1' B,'c1' C from dual union
select 'a4' A, 'b1' B ,'c2' C from dual union
select 'a5' A, 'b1' B,'c2' C from dual union
select 'a6' A, 'b1' B ,'c2' C from dual ) T ) tt
where ss<3
而且要能在PL/SQL中运行的语句哦~~
子查询是会慢,应该可以试试,不知道谁有更好的方法
select a,b,c
from TABLE_NAME T1
where exists
(
select C,COUNT(1) from
TABLE_NAME T2
where t2.c=t1.c
and t2.a < t1.a
GROUP BY C
HAVING COUNT(1) <3)