+ -
当前位置:首页 → 问答吧 → 问个sql语句

问个sql语句

时间:2011-12-02

来源:互联网

现在数据库中的某个字段的数据是这样的
GENERATE
SUBMIT
APPROVE
APPROVAL_REJECT
SUBMIT
APPROVE
APPROVE
APPROVAL_REJECT
SUBMIT
APPROVE
APPROVE
APPROVE
我如何从最后一次SUBMIT开始取数据呢?(如上面,会取出最后四行)

作者: yqsshr   发布时间: 2011-12-02

测试数据:
SQL code

CREATE  TABLE T29
(
    ID      VARCHAR2(20),
    des     VARCHAR2(20)
);

INSERT INTO T29 VALUES('1', 'GENERATE');
INSERT INTO T29 VALUES('2', 'SUBMIT');
INSERT INTO T29 VALUES('3', 'APPROVE');
INSERT INTO T29 VALUES('4', 'APPROVAL_REJECT');
INSERT INTO T29 VALUES('5', 'SUBMIT');
INSERT INTO T29 VALUES('6', 'APPROVE');
INSERT INTO T29 VALUES('7', 'APPROVE');
INSERT INTO T29 VALUES('8', 'APPROVAL_REJECT');
INSERT INTO T29 VALUES('9', 'SUBMIT');
INSERT INTO T29 VALUES('10', 'APPROVE');
INSERT INTO T29 VALUES('11', 'APPROVE');
INSERT INTO T29 VALUES('12', 'APPROVE');



结果:

作者: LuiseRADL   发布时间: 2011-12-02

巧妙运用自带的rowid,亮了

作者: xiedi1209   发布时间: 2011-12-02

SQL code
with t as (
select 'GENERATE'  a     from dual  union all 
select 'SUBMIT'          from dual  union all 
select 'APPROVE'         from dual  union all 
select 'APPROVAL_REJECT' from dual  union all 
select 'SUBMIT'          from dual  union all 
select 'APPROVE'         from dual  union all 
select 'APPROVE'         from dual  union all 
select 'APPROVAL_REJECT' from dual  union all 
select 'SUBMIT'          from dual  union all 
select 'APPROVE'         from dual  union all 
select 'APPROVE'         from dual  union all 
select 'APPROVE'         from dual            

) select a from  
(select  a,row_number() over (order by rownum) rn from t  ) c 
where c.rn>=
( select  max(rn) from (
select a,row_number() over (order by rownum) rn from t )  
where a='SUBMIT' )

作者: dws2004   发布时间: 2011-12-02

额 跟1l的sql核心思想一样的

不过我加了row_numer排序,好像画蛇添足了

作者: dws2004   发布时间: 2011-12-02