上面的数据是关联几张表后筛选出来的。
但是还需要进一步的筛选。
次数执行上线为10次,状态码03表示失败,04表示成功
如图中红框的几个,需要做的处理如下:
1.ID,姓名相同,次数,状态码不同的情况 只显示 状态码为4的。
2.ID,姓名相同,次数,状态码相同的情况 只显示一条记录
比如:第一个框,只显示单条;第二个狂也是只显示单条;
第三个框只显示状态码为4的。
本人数据库小白。。所以特地上论坛向各位大神请教一下。
谢谢!

解决方案 »

  1.   


    -- 大概这个样子select ID,XM,CS,ztm from (
    select ID,XM,CS,ztm , row_number() over(partition by ID,XM,CS order by ztm) rn
    from mytable 
    ) x 
    where rn = 1 
      

  2.   


    -- 大概这个样子
    -- 加个 desc , 把 4 的放在 3 前面
    select ID,XM,CS,ztm from (
    select ID,XM,CS,ztm , row_number() over(partition by ID,XM,CS order by ztm  desc) rn
    from mytable 
    ) x 
    where rn = 1 
      

  3.   

    版主大大,多谢对此问题关注和回复。
    有个疑问是,我这个查出的数据是在几个表关联之后查询出来的结果,
    我是想之前的SQL语句上面加上条件判断,就是where之后,或者 其他条件之后把。然后达到我上面提出问题的结果。
    但是我看您给的答案好像不能那样直接加吧??
    求指导,谢谢了。
      

  4.   

    PS: row_number() over(partition by ID,XM,CS order by ztm  desc这是oracle的用法吧,mysql里面没有这种类似的用法的啊。