- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
select a, trim(both ',' from max(SYS_CONNECT_BY_PATH(b, ',')))bb from (
select count(1) over (partition by a order by /* Важно:*/ a,b /*!*/)rn, a, b from (
select a, b from (
select 1 a, 'a' b from dual union all
select 1 a, 'b' b from dual union all
select 2 a, 'c' b from dual union all
select 2 a, 'd' b from dual union all
select 2 a, 'e' b from dual union all
select 3 a, 'f' b from dual
) order by dbms_random.value
)
)
start with rn=1 connect by nocycle prior a=a and prior rn+1=rn
group by a;
Задача на агрегацию с конкатенацией строк. Можно решить правильно - через свой агрегирующий объект, а можно так, "не по правилам" ))
Steve_Brown 20.06.2012 10:29 # 0
DBdev 20.06.2012 12:50 # +5
А можно еще раз постановку задачи? Только медленно и внятно.
Ибо из этого "языка для домохозяек" (авторитетное мнение анонимуса нельзя игнорировать) немного неясно, что автор пытается сделать с рандомным сетом данных, особенно в последней внешней обертке, которая уж очень оракл специфик.
RomaShka 20.06.2012 19:05 # 0
a | bb
---+----
1 | a,b
2 | c,d,e
3 | f
Сортировка по рандому, дабы удостовериться, что из несортированного набора получится упорядоченный результат
RomaShka 20.06.2012 19:08 # 0
3.14159265 20.06.2012 19:29 # +4
Я даже не знаю что хуже - функциональный пиздец haskell-style или декларативный sql, расширенный всякими диалектическими фичами.
Хотя это
>start with rn=1 connect by nocycle prior a=a and prior rn+1=rn
forом пахнет
bormand 20.06.2012 19:31 # +3
TheHamstertamer 25.06.2012 14:59 # +1
А как же O'Haskell, Haskell++ и Template Haskell? А еще всякие Goffer и другое учебное говно.
eth0 20.06.2012 20:43 # +1
RomaShka 22.06.2012 18:34 # +1
guest 22.06.2012 11:14 # −3