基于SQL

时间:2016-05-10 20:08:08

标签: sql oracle

这是我的帖子。如果我在我的问题中没有详细说明,请提前道歉。

要求是我需要编写SQL语句来实现组列中提到的结果。

AFE_CD STAGE_NO  LEGEND  GROUP_NO 
40     1         STAGE   1        
40     2         STAGE   1          
40     3         STAGE   1 
40     4         STAGE   1 
40     5         STAGE   1 
40     6         STAGE   1 
40     7         STAGE   1 
40     8         SKIP    2 
40     9         STAGE   3 
40     10        SKIP    4 
40     11        STAGE   5 
40     12        STAGE   5 
40     13        STAGE   5 
40     14        STAGE   5 
40     15        STAGE   5 
40     16        STAGE   5 
50     1         STAGE   6 
50     2         STAGE   6 
50     3         STAGE   6 
50     4         STAGE   6 
50     5         STAGE   6 
50     6         STAGE   6 
50     7         STAGE   6 
50     8         SKIP    7 
50     9         STAGE   8  

我尝试了各种dense_rank()选项,但没有运气。失败的尝试之一如下:(。

select t.*, DENSE_RANK() OVER ( ORDER BY legend desc ) rnk
from   mytable t

mytable包含如上所示的数据。

感谢任何帮助/指示。

谢谢

1 个答案:

答案 0 :(得分:2)

对于GROUP_NOLEGEND订购的列表,您似乎希望对AFE_CDAFE_CD次更改STAGE_NO增加LAG。一种解决方案是使用select afe_cd, stage_no, legend, sum(is_change) over (order by afe_cd, stage_no) as group_no from ( select afe_cd, stage_no, legend, case when legend = lag(legend) over (order by afe_cd, stage_no) and afe_cd = lag(afe_cd) over (order by afe_cd, stage_no) then 0 else 1 end as is_change from mytable ) order by afe_cd, stage_no; 检测更改,其中1表示更改,0表示不更改。然后构建一个总计这个。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        int rowHeight = 0;
        if (tableView == secondTable) {
            rowHeight = 62;
        }
        if (tableView == thirdTable) {
            rowHeight = 72;
        }
        return rowHeight;
    }