2013-04-17 3 views
-5

Это результаты предыдущего запроса (select Well_Dprod_Date,Formation_Name from data_dprod).Query sql in oracle

Well_Dprod_Date Formation_Name 
11/15/2002  BRF. 
11/16/2002  BRF. 
11/17/2002  BRF. 
11/18/2002  BRF. 
11/19/2002   BRF.  
11/20/2002   BRF.  
11/21/2002   BRF.  
11/22/2002   BRF.  
11/23/2002   BRF.  

Как получить результаты запроса выглядит следующим образом:

Well_Dprod_Date Formation_Name 
11/15/2002   BRF.   
11/16/2002  
11/17/2002  
11/18/2002  
11/19/2002  
11/20/2002  
11/21/2002  
11/22/2002  
11/23/2002   BRF. 

Спасибо.

+0

Какова логика второго результата? – Taryn

+0

Вам нужно объяснить требуемую логику - не ожидаемый результат. Вам нужно указать имя формы между двумя непрерывными Well_Dprod_Dates? Является ли это историей изменений имени формы с указанным текущим значением? и т. д. –

+0

да, мне нужно имя Formation_Name сначала и последнее из того же Formation_Name между двумя непрерывными Well_Dprod_Dates. –

ответ

0

Ваш вопрос немного неоднозначен. Это то, что вы хотите?

SELECT WELL_DPROD_DATE, 
     FORMATION_NAME, 
     CASE 
     WHEN R1 = 1 OR R2 = 1 THEN 
      FORMATION_NAME 
     ELSE 
      NULL 
     END AS FORMATION_NAME_F 
FROM (SELECT WELL_DPROD_DATE, 
      FORMATION_NAME, 
      RANK() OVER(PARTITION BY FORMATION_NAME ORDER BY WELL_DPROD_DATE ASC) AS R1, 
      RANK() OVER(PARTITION BY FORMATION_NAME ORDER BY WELL_DPROD_DATE DESC) AS R2 
      FROM DATA_DPROD) T 
+0

Спасибо, очень, это запрос, работающий :) –