Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите с запросом...  [new]
Guest13
Guest
Подскажите кто может:
Пусть в таблице 3 поля (id - не учитываем), название, код валюты, кол-во:
name, cur_code, amount.
Пусть при группировке и применении агрегатных функций получаем, предположим:
select t.name,
t.cur_code,
sum(t.amount) as summa
from t
group
by t.name,
t.cur_code,

Name | cur_code | summa |
----------------------------------
1: Отдел раз | Доллар | 200 |
2: Отдел два | Евро | 100 |
3: Отдел раз | Рубли | 1000 |
4: Отдел два | Доллар | 600 |
................................................

Необходимо получить, предположим:):
name | "Доллар" | "Евро" | "Рубли" |
------------------------------------
Отдел раз | 200 | | 1000 |
Отдел два | 600 | 100 | |

Есть ли какая-нить функция в оракле, кот. сама расположит в необходимом порядке.
Моно ет сделать подзапросами, но ет по производительности как-то не очень получится, кто что может подсказать?
22 окт 07, 21:18    [4824789]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
select  t.name,
        t.cur_code,
        sum(
            case t.cur_code
              when 'Доллар' then t.amount
            end
           ) as "Доллар",
        sum(
            case t.cur_code
              when 'Евро' then t.amount
             end
          ) as "Евро",
        sum(
            case t.cur_code
              when 'Рубли' then t.amount
            end
           ) as "Рубли"
  from  t
  group by t.name,
        t.cur_code
/

SY.

Сообщение было отредактировано: 22 окт 07, 21:30
22 окт 07, 21:29    [4824812]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
Guest13
Guest
Нет, так я тож могу, подзапросами, а как-нить еще моно ет сделать?
22 окт 07, 21:46    [4824841]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
Guest13
Нет, так я тож могу, подзапросами, а как-нить еще моно ет сделать?


And where do you see подзапросы???

SY.
22 окт 07, 21:49    [4824846]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
Guest13
Guest
:) гы. Ошибся, ет конечно не подзапросы, просто аналогичный результат получал ими, просто ет не совсем что я ожидал увидеть. Мне нуно много таких столбцов, кот. включают в себя по три подстолбца с валютой, а не ток три, а прописывать 15 case ... when,как-то не фонтан, хотя ет лучше чем 15 подзапросов:) поэтому и решил спроситью....
22 окт 07, 21:54    [4824853]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Guest13
:) гы. Ошибся, ет конечно не подзапросы, просто аналогичный результат получал ими, просто ет не совсем что я ожидал увидеть. Мне нуно много таких столбцов, кот. включают в себя по три подстолбца с валютой, а не ток три, а прописывать 15 case ... when,как-то не фонтан, хотя ет лучше чем 15 подзапросов:) поэтому и решил спроситью....

Свою функцию писать придется по транспонированию. Смотрите в FAQ в качестве примера.
23 окт 07, 00:29    [4825106]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
xymbo
Guest13
:) гы. Ошибся, ет конечно не подзапросы, просто аналогичный результат получал ими, просто ет не совсем что я ожидал увидеть. Мне нуно много таких столбцов, кот. включают в себя по три подстолбца с валютой, а не ток три, а прописывать 15 case ... when,как-то не фонтан, хотя ет лучше чем 15 подзапросов:) поэтому и решил спроситью....

Свою функцию писать придется по транспонированию. Смотрите в FAQ в качестве примера.


По- моему автор в данном случае как раз знает количество столбцов.
Ему просто лениво так много писать.

ИМХО если углубится в RefCursor-ы, то еще не раз с завистью вспомнит
несчастные 15 столбиков
23 окт 07, 00:34    [4825115]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Верно конечно, чтобы сейчас сделать по-быстрому . Я предложил в качестве универсального примера, например и для других запросов, где это потребуется.:)
23 окт 07, 00:38    [4825119]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
xymbo
Верно конечно, чтобы сейчас сделать по-быстрому . Я предложил в качестве универсального примера, например и для других запросов, где это потребуется.:)


xymbo, понятно. Я просто хотел сказать, что критериями предпочтения при выборе
должно быть "известно или неизвестно число столбиков", а не "много ли их или мало".

Мне кажется , неважно сколько столбцов : если мы знаем сколько их -
динамика не нужна. Но это ИМХО.
23 окт 07, 00:44    [4825130]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом...  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
dmidek, в этом плане полностью с Вами согласен. Если знаем количество столбцов, знаем, что в "ближайшее" будущее оно не поменяется :), то динамику я бы тоже не использовал.
23 окт 07, 00:48    [4825136]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить