请问有一个表名为 VOYAGE 有字段 VOYAGE_ID,VESSEL_CODE........ 
我想取出的数据集时多一个FLAG字段,实现的数据如下: 
VOYAGE_ID VESSEL_CODEFLAG 
1          1001            1 
2          1001            1 
3          1001            1 
4          1003            2 
5          1003            2 
6          1005            3 
7          1005            3 
8          1008            4 
9          1008            4 
10          1008            4 
11          1008            4 语句该怎么写,谢谢!!!这个刚才这样可以解决了
select VESSEL_CODE,dense_rank() over( order by VESSEL_CODE) flag from VOYAGE
但是我想再加一列 FLAG2 来表示FLAG中的最大值
VOYAGE_ID VESSEL_CODEFLAG   FLAG2
1          1001            1        4
2          1001            1        4 
3          1001            1        4 
4          1003            2        4 
5          1003            2        4
6          1005            3        4
7          1005            3        4
8          1008            4        4
9          1008            4        4
10          1008            4       4
11          1008            4       4 

解决方案 »

  1.   

    select VESSEL_CODE,dense_rank() over( order by VESSEL_CODE) flag ,
    ( select max(dense_rank() over( order by VESSEL_CODE)) from VOYAGE) flag2  from VOYAGE
      

  2.   

    有没有其他的方法啊,这个不行啊,SQL提示错误,还有我的这个表是代表性的写一个表,其实是很多个表关联起来的,如果这样写,那SELECT中还要关联这些表,太麻烦了
      

  3.   

    跟1楼的差不多
    select VESSEL_CODE,flag,max(flag)
    from (select VESSEL_CODE,dense_rank() over( order by VESSEL_CODE) flag from VOYAGE);
      

  4.   

    WITH a AS (select VESSEL_CODE,dense_rank() over( order by VESSEL_CODE) flag from VOYAGE)
    select VESSEL_CODE,flag,(select max(flag) from a) flag2
    from a