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

Трансформация на таблица / анализ на поле в PL/SQL

Друга алтернатива е да използвате моделната клауза:

SQL> select id
  2       , value
  3    from codes
  4   model
  5         return updated rows
  6         partition by (id)
  7         dimension by (-1 i)
  8         measures (value)
  9         ( value[for i from 0 to length(value[-1])-length(replace(value[-1],',')) increment 1]
 10           = regexp_substr(value[-1],'[^,]+',1,cv(i)+1)
 11         )
 12   order by id
 13       , i
 14  /

        ID VALUE
---------- -------------------
        10 A
        10 B
        10 C
        11 A
        11 B
        12 A
        12 B
        12 C
        12 D
        12 E
        12 F
        13 R
        13 T
        13 D
        13 W
        13 W
        13 W
        13 W
        13 W
        13 S
        13 S

21 rows selected.

Написал съм до 6 алтернативи за този тип заявка в тази публикация в блога:http://rwijk.blogspot.com/2007/11/interval-based-row-generation.html

Поздрави, Роб.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Скриптът SQL*Plus се изпълнява два пъти

  2. Oracle:Защо не мога да разчитам на ROWNUM в клауза за изтриване

  3. Стойност или цифрова грешка във функция и не мога да открия къде съм сбъркал Oracle

  4. Как да въведете обвързвания за параметър с множество стойности в SQL Developer

  5. неявни вътрешни съединения - равни ли са?