|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
Всем добрый день. Помогите, пожалуйста, переписать запрос(c ora на pg(9.3 версия)): select case grouping_id(x.id1, x.id2, x.id3) when 0 then x.id1 || x.id2 || x.id3 when 1 then x.id1 || x.id2 when 3 then x.id1 else '$' end from x group by rollup(x.id1, x.id2, x.id3) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 14:01 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
Galina_Bob, 9.6 поставьте, там добавлена поддержка `ROLLUP` / `CUBE` конструкций. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 14:07 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
vyegorov, да, я знаю, что там поддерживается эта конструкция, но пока нет возможности поднять версию. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 14:11 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
Galina_Bob, Ну надо написать серию подзапросов (через WITH), которые: сначала будут группировать по x.id1, x.id2, x.id3 затем по x.id1, x.id2 потом по x.id1 ну и совсем без группировок, а-ля Totals. Затем сложить их все через UNION ALL, добавив нужную сортировку. Что-то типа этого: http://stackoverflow.com/q/13990821/1154462 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 14:54 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
vyegorov, Спасибо, это то я сделала, но вот что делать с grouping_id не знаю. и пока не получилось именно раздел select переписать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 15:01 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
Galina_Bob, Почитайте про функцию GROUPING() , полагаю, что она есть эквивалент для `grouping_id`. Исходя из описания, получается: для группировки по x.id1, x.id2, x.id3 -- GROUPING() всегда будет 0 (000) для группировки по x.id1, x.id2 -- GROUPING() всегда будет 1 (001) группировка по x.id1 -- GROUPING() всегда будет 3 (011) для Total -- GROUPING() всегда будет 7 (111) Соответственно, можно исключить вызов этой функции и просто добавить выржения "как есть" в подзапосы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 15:18 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
vyegorov, Ясно, спасибо огромное. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 15:35 |
|
Миграция запроса с oracle в pg
|
|||
---|---|---|---|
#18+
Galina_Bobvyegorov, Спасибо, это то я сделала, но вот что делать с grouping_id не знаю. и пока не получилось именно раздел select переписать надо расписать через union all все подитоги, (вроде у вас один, не сложно) grouping не прокатит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2017, 10:58 |
|
|
start [/forum/topic.php?fid=53&fpage=79&tid=1996719]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 140ms |
0 / 0 |