sql >> Databáze >  >> RDS >> Oracle

Transformace tabulky / parsování polí v PL/SQL

Další alternativou je použití modelové klauzule:

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.

V tomto blogpostu jsem napsal až 6 alternativ pro tento typ dotazu:http://rwijk.blogspot.com/2007/11/interval-based-row-generation.html

S pozdravem, Robe.



  1. Maximální počet SQL dotazů na stránku

  2. Jak se používají hodnotící algoritmy Reddit a Hacker News?

  3. Analyzujte výchozí hodnoty parametrů pomocí prostředí PowerShell – část 1

  4. Funkce LOWER() v Oracle