Конференция "Базы" » Выборка "в ширину". Можно ли такое сделать? [D7]
 
  • Очень злой (04.03.11 11:41) [0]
    Например есть таблица/представление с данными (субд Oracle)

    kodv   kodh   zn  
    111    D1      15
    111    D5      17
    111    D7      22
    115    D1      35
    115    D3      54
    221    D3      11
    221    D4      44
    222    D4      12



    нужно получить такую выборку:


    kodv     D1   D3   D4   D5   D7
    111      15    null  null 17    22
    115      35    54   null  null  null
    221      null   11   44   null  null
    222      null   null  12   null  null



    Реально ли это сделать с помощью SQL?
    Если да, то как?
  • Root (04.03.11 11:56) [1]
    PIVOT
  • Кщд (04.03.11 12:23) [2]
    >Очень злой   (04.03.11 11:41)  
    если не 11g, то либо значения kodh должны быть конечным, строго определенным набором, либо dynamic sql.
  • Очень злой (04.03.11 13:53) [3]
    Значения kodh  у меня не являются строго определенным набором, да и Oracle 9i

    Но гугле по слову

    > Root   (04.03.11 11:56) [1]
    >
    > PIVOT

    нашел:
    http://my-oracle.it-blogs.com.ua/post-75.aspx
    http://www.sql.ru/forum/actualthread.aspx?tid=409886&pg=-1

    Немного подправил, ибо автор видимо что-то попропускал в коде, и заработало...

    Спасибо всем!
  • Игорь Шевченко © (04.03.11 15:15) [4]
    Очень злой   (04.03.11 13:53) [3]

    Как и было сказано - dynamic sql
    ничего нового под луной
  • Очень злой (04.03.11 16:31) [5]

    > Как и было сказано - dynamic sql
    > ничего нового под луной


    Э... для Вас как для мастера, да.
    а для меня ....
  • Sergey13 © (04.03.11 17:08) [6]
    Как вариант - на клиенте развернуть в каком-нибудь датасете в памяти типа RxMemoryData.
  • OW © (05.03.11 09:35) [7]

    > Очень злой   (04.03.11 16:31) [5]

    Это так кажется, попробуй
    тоже самое, лень было, а разобравшись - дел на 5 мин.
 
Конференция "Базы" » Выборка "в ширину". Можно ли такое сделать? [D7]
Есть новые Нет новых   [134431   +15][b:0.002][p:0.002]