2014-12-26 2 views
1

мне нужно иметь уникальный номер поля, на мой взгляд, так что я пытался использовать row_num(), но я получаю "window error" это синтаксис им с помощью для создания представления:Oracle SQL с помощью row_num() запрос с группой по

create or replace view DASHBOARD_P_PEILUT_NIDRESHET 
as (
    select ROW_NUMBER() over(order by d.mahoz_name) rownum1 , 
      d.MAHOZ_NAME,d.PEILUT_NIDRESHET,g.shape ,COUNT(objectid) cnt_obj 
    from dashboard_mehoz_spatial_join d,sde_user.GiS_MEHOZ g 
    where d.mahoz_name=g.mahoz_name 
    group by ROW_NUMBER() , d.MAHOZ_NAME, d.PEILUT_NIDRESHET, g.shape 
); 

и это ошибка:

Error starting at line : 4 in command - 
create or replace view DASHBOARD_P_PEILUT_NIDRESHET as (select ROW_NUMBER() over(order by d.mahoz_name) rownum1 ,d.MAHOZ_NAME,d.PEILUT_NIDRESHET,g.shape ,COUNT(objectid) cnt_obj 
from dashboard_mehoz_spatial_join d,sde_user.GiS_MEHOZ g 
where d.mahoz_name=g.mahoz_name 
group by ROW_NUMBER() , d.MAHOZ_NAME, d.PEILUT_NIDRESHET, g.shape) 
Error at Command Line : 7 Column : 10 
Error report - 
SQL Error: ORA-30484: missing window specification for this function 
30484. 00000 - "missing window specification for this function" 
*Cause: All window functions should be followed by window specification, 
      like <function>(<argument list>) OVER (<window specification>) 
*Action: 

, что я делаю неправильно?

ответ

3

Вы не можете использовать group by аналитическую функцию. Но в любом случае это не обязательно. Попробуйте следующее:

create or replace view DASHBOARD_P_PEILUT_NIDRESHET as 
    select ROW_NUMBER() over (order by d.mahoz_name) as rownum1 , 
      d.MAHOZ_NAME, d.PEILUT_NIDRESHET, g.shape, COUNT(objectid) cnt_obj 
    from dashboard_mehoz_spatial_join d join 
     sde_user.GiS_MEHOZ g 
     on d.mahoz_name = g.mahoz_name 
    group by d.MAHOZ_NAME, d.PEILUT_NIDRESHET, g.shape ;