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

как да получите този резултат с помощта на оракулска заявка в йерархична структура

Мисля, че успях да направя това с аналитични функции (не елегантно, но все пак) -

with
grps as(
    select marker
    from(
        select collateral_num,
               loan_num,
               rownum as marker,
               case when lead(loan_num,1) over (order by collateral_num) <> loan_num
                         and lead(collateral_num,1) over (order by collateral_num) <> collateral_num
                    then 1
                    when lead(loan_num,1) over (order by collateral_num) is null
                    then 1
                    else null end as grp
          from  loan
         order by collateral_num
        )
    where grp is not null
       )
, marked as(
    select loan.*, grps.*, row_number() over(partition by marker order by collateral_num) as splitter
    from loan, grps
           )
select  collateral_num,
        min(collateral_num) over (partition by marker) as min_collateral_num,
        loan_num
from    marked y
where   splitter <= marker
    and (splitter > (select max(x.marker) from marked x where x.marker < y.marker)
     or marker = (select min(marker) from marked))

Вижте sqlfiddle на http://sqlfiddle.com/#!4/cfb1a7/40/ 0




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:каква е ситуацията да се използва RAISE_APPLICATION_ERROR?

  2. Oracle XMLQuery предава стойност на параметър

  3. Преобразувайте специален низ в дата в H2

  4. Как да извикате REPLACE с CLOB (без да надвишавате 32K)

  5. Как да копирам или импортирам схеми на Oracle между две различни бази данни на различни сървъри?