Oracle
 sql >> база данни >  >> RDS >> Oracle

ИЗБЕРЕТЕ родителя на запис

Можете да използвате корелирана подзаявка, за да намерите най-новия disp_order за предишното ниво:

SQL Fiddle

Настройка на схема на Oracle 11g R2 :

CREATE TABLE tbl_pattern ( order_no, code, disp_order, lvl, description ) ASSELECT 'RM001-01', 1, 0, 1, 'HK140904-1A' FROM DUAL UNION ALLSELECT 'RM001-01', 1, 1, 2, „HK140904-1B“ ОТ DUAL UNION ALLSELECT „RM001-01“, 1, 2, 3, „HK140904-1B“ ОТ DUAL UNION ALLSELECT „RM001-01“, 1, 3, 4, „HK140904-1C“ ' ОТ DUAL UNION ALLSELECT 'RM001-01', 1, 4, 5, 'HK140904-1D' ОТ DUAL UNION ALLSELECT 'RM001-01', 1, 5, 2, 'HK140904-1E' ОТ DUAL UNION ALLSELECT 'RM001- 01', 1, 6, 3, 'HK140904-1E' ОТ DUAL UNION ALLSELECT 'RM001-01', 1, 7, 3, 'HK140904-1X' ОТ DUAL UNION ALLSELECT 'RM001-01', 1, 8, 4 , 'HK140904-1E' ОТ DUAL UNION ALLSELECT 'RM001-01', 1, 9, 5, 'HK140904-1E' ОТ DUAL; 

Заявка 1 :

SELECT t.*, (SELECT MAX( disp_order) FROM tbl_pattern p WHERE p.order_no =t.order_no AND p.code =t.code AND p.lvl =t.lvl - 1 AND p.disp_order  

Резултати :

<предварителен код>| ПОРЪЧКА_NO | КОД | DISP_ORDER | LVL | ОПИСАНИЕ | РОДИТЕЛ ||----------|------|------------|-----|---------- ---|--------|| RM001-01 | 1 | 0 | 1 | HK140904-1A | (нула) || RM001-01 | 1 | 1 | 2 | HK140904-1B | 0 || RM001-01 | 1 | 2 | 3 | HK140904-1B | 1 || RM001-01 | 1 | 3 | 4 | HK140904-1C | 2 || RM001-01 | 1 | 4 | 5 | HK140904-1D | 3 || RM001-01 | 1 | 5 | 2 | HK140904-1E | 0 || RM001-01 | 1 | 6 | 3 | HK140904-1E | 5 || RM001-01 | 1 | 7 | 3 | HK140904-1X | 5 || RM001-01 | 1 | 8 | 4 | HK140904-1E | 7 || RM001-01 | 1 | 9 | 5 | HK140904-1E | 8 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсете подобни думи с помощта на индекс

  2. Получаване на грешка ORA-00909:невалиден брой аргументи

  3. Използване на низ в съхранена процедура на Oracle

  4. Как да преброим редовете, които съдържат ненулеви стойности в sql

  5. Oracle JDBC:невалидно потребителско име/парола (ora-01017)