Номер шага запроса Oracle SQL

#sql #oracle

#sql #Oracle

Вопрос:

Я надеюсь, что вы, ребята, сможете помочь мне с моей проблемой. Прямо сейчас у меня есть запрос ниже:

 SELECT ID, (ROW_NUMBER() OVER(ORDER BY ID)), Date 
FROM MYTABLE;
  

вывод:

 No. Identification No.  Date
1   100010              11-Jul-15
2   100011              7-Jul-15
  

Я хотел бы, чтобы результат был, возможно ли это?:

 No. Identification No.  Date
1   100010              7-Jul-15
2   100010              10-Jul-15
3   100010              11-Jul-15
1   100011              7-Jul-15
2   100011              10-Jul-15
3   100011              11-Jul-15
  

Комментарии:

1. В предоставленном примере данных должна отсутствовать запись.

2. Логика вашего вывода неясна. Почему не 8 и 9 июля? а что, если у вас есть еще одна строка, например, с 3 июля?

3. Почему-то я не понимаю, как ваш SQL-оператор связан с выводом — вывод ROW_NUMBER(), безусловно, не может быть вашим «Идентификационным номером»… Может быть, вы хотите перегородка выход функции row_number() как так: функции row_number() над(раздел по <???> ПОРЯДОК ПО идентификатору)

Ответ №1:

Вам нужен список дат:

 select d.dte, t.id,
       row_number() over (partition by id order by dte) as num
from t cross join
     (select date '2015-07-07' as dte from dual union all
      select date '2015-07-10' as dte from dual union all
      select date '2015-07-11' as dte from dual
     ) d;
  

Комментарии:

1. Я добавил раздел, и он сработал. спасибо за вашу помощь.

Ответ №2:

Вам нужно разделить row_number()

 SELECT ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Date) as Row_ord, 
       ID, 
       Date 
FROM MYTABLE;